如何知道WalletConnet react native当前在MetaMask中连接的网络?

vh0rcniy  于 2023-01-21  发布在  React
关注(0)|答案(1)|浏览(290)

我正在开发的React原生移动的应用程序,用户可以连接他们的加密钱包(MetaMask, Rainbow, etc.)到移动应用程序。一切都很好。我用这个(@walletconnect/react-native-dapp)React原生包来实现这一要求。
连接外部钱包(MetaMask)后,稍后我必须通过我的应用程序进行一些交易。
要进行交易,我必须知道当前在MetaMask钱包中设置的网络。
是否有任何方法可以通过此react-native包了解当前连接到Metamask的网络(chainId)。
要做的交易,我用这个代码.

try {
  let dataa = await contract.methods
    .transfer(toAddress, value.toString())
    .encodeABI();
  let txObj = {
    // gas: Web3js.utils.toHex(100000),
    data: Web3js.utils.toHex(dataa),
    from: userWallet,
    to: POZ_TOKEN, // Contractor token address
  };
  try {
    const transactionHash = await connector
      .sendTransaction(txObj)
      .catch((_err: any) => {
        Toast.show({
          autoHide: true,
          text1: t('topUpPoz.transactionFailed'),
          type: 'error',
        });
      });
    console.log('transactionHash is =', transactionHash);

请给我推荐一个.

kr98yfug

kr98yfug1#

通过@walletconnect/react-native-dapp,我们可以使用连接器获取链ID,示例代码如下所示。
注:checkNetworkIdHandler是一个自定义的用户定义函数,用于检查连接的chainId是否有效。

import {useWalletConnect} from '@walletconnect/react-native-dapp';  
 
  //creating a wallet connect connector
  const connector = useWalletConnect();

  const connectExternalWallet = React.useCallback(() => {
    return connector.connect();
  }, [connector]);

//below code snippet to be called on wallet connect button click
async function connectWallet(){
  try {
        let connection = await connectExternalWallet();
        let networkStatus = checkNetworkIdHandler(connection.chainId);
  }catch (exception) {
        console.log("Exception occurred while connecting to metamask");
  }
}

相关问题