我一直在尝试通过遵循web3react的文档来集成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",
当我使用useWeb3React()
中的activate
函数时,如下代码所述:
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应用程序的控制台日志上,它显示了一条警告,上面写着
Warning: Suppressed stale connector activation [object Object]
因此,它无法接收account
变量内部的地址。
重要提示:我在InjectedConnector
中使用了类似的代码,它对MetaMask非常适用。
尽管上述问题也出现在其他钱包中。这些是我面临的问题的钱包:
- 钱包连接
- WalletLink(Coinbase钱包(
- Portis
我用两种方法解决了它:
-
在后续线路中多次调用激活功能
-
在调用激活功能时设置延迟,类似于
setTimeout(() => activate(...), 500)
我不确定你的代码结构,所以我不知道这有什么帮助。但过时的连接器对象问题是我使用上面两种方法解决的。