web3-react v8中如何从useWeb3React()获取原v6的library?
在@web3-react/core v8中替代library的获取方式
v8版本不再直接提供library对象,你需要通过useWeb3ReactCore返回的connector来获取对应provider,再基于它实现原有的功能:
1. 获取并初始化provider
import { useWeb3ReactCore } from '@web3-react/core' import { Web3Provider } from '@ethersproject/providers' const { connector } = useWeb3ReactCore() let provider: Web3Provider | undefined if (connector?.provider) { provider = new Web3Provider(connector.provider) }
2. 调用原library的方法
拿到provider后,即可执行你需要的操作:
if (provider) { // 获取区块号 const blockNumber = await provider.getBlockNumber() // 调用合约方法 const result = await provider.call({ to: call.address, data: call.callData, }) }
补充提示
- 若需确保provider已就绪,可结合
useEffect或状态管理处理异步逻辑 - 不同类型的connector(如MetaMask、WalletConnect)返回的
provider存在细微差异,但都可通过Web3Provider包装后使用ethers标准方法
内容的提问来源于stack exchange,提问作者realplay
相关产品推荐
相关产品推荐

