首页 > 解决方案 > 如何使用 web3-react 将 WalletConnect 集成到您的 Dapp 中?

问题描述

我一直在尝试按照web3-react的文档来集成WalletConnect

我用于连接器的配置如下:

import { WalletConnectConnector } from '@web3-react/walletconnect-connector';

export const walletconnect = new WalletConnectConnector({
  rpc: { 1: RPC_URLS[1], 4: RPC_URLS[4] },
  infuraId: INFURA_TOKEN,
  bridge: BRIDGE_URL,
  qrcode: true,
  pollingInterval: 15000,
});

另外,包的版本如下:

"@web3-react/core": "^6.0.9",
"@web3-react/walletconnect-connector": "^6.2.0",

当我使用下面代码中解释的activate函数时:useWeb3React()

const { connector, activate, active, account } = useWeb3React();
activate(walletconnect, undefined, true)
    .catch((error) => {
        if (error instanceof UnsupportedChainIdError) {
            activate(walletconnect)
        } else {
            console.log('Pending Error Occured')
        }
    })

它能够生成二维码,我也能够通过手机上的 MetaMask 应用程序成功扫描,并且在显示成功连接的移动应用程序上。

但是,在 Web App 的控制台日志中,它会显示一条警告信息

Warning: Suppressed stale connector activation [object Object]

因此,它无法接收account变量内的地址。

重要提示:我使用了类似的代码,InjectedConnector它对 MetaMask 工作得很好

虽然上述问题也出现在其他钱包中。这些是我面临问题的钱包:

  1. 钱包连接
  2. WalletLink(Coinbase 钱包)
  3. 波蒂斯

任何建议都会对我有很大帮助。

标签: javascriptreactjsethereumweb3

解决方案


我在开发 tagprotocol.com 时也遇到了同样的问题,但是我通过两种方式解决了它:

  1. 在后续行中多次调用激活函数(我知道听起来很奇怪)

  2. 设置调用激活函数的延迟,像这样

    setTimeout(() => 激活(...), 500)

我不确定你的代码结构,所以我不知道这有什么帮助。但是过时的连接器对象问题是我使用上述两种方法解决的问题。在评论中告诉我。


推荐阅读