Reactjs Web3:从地址检索ERC20令牌的余额

Reactjs Web3:从地址检索ERC20令牌的余额,reactjs,token,web3,erc20,Reactjs,Token,Web3,Erc20,错误:返回的值无效,是否汽油用完了?如果您没有为要从中检索数据的协定使用正确的ABI、从不存在的块号请求数据或查询未完全同步的节点,则也可能会看到此错误 abi: 合约未响应函数调用。是abi吗?有什么方法可以替代abi或改进它吗?已更改const web3=new web3(wss://mainnet.infura.io/ws/v3/${infuraProjectId}) toconst web3=new web3(window.ethereum) const tokenAddress

错误:返回的值无效,是否汽油用完了?如果您没有为要从中检索数据的协定使用正确的ABI、从不存在的块号请求数据或查询未完全同步的节点,则也可能会看到此错误

abi:


合约未响应函数调用。是abi吗?有什么方法可以替代abi或改进它吗?

已更改
const web3=new web3(
wss://mainnet.infura.io/ws/v3/${infuraProjectId}
to
const web3=new web3(window.ethereum)

    const tokenAddress = "0x101848D5C5bBca18E6b4431eEdF6B95E9ADF82FA";

 const web3Context = useWeb3(`wss://mainnet.infura.io/ws/v3/${infuraProjectId}`);

  const { networkId, networkName, accounts, providerName, lib  } = web3Context;

  const web3 = new Web3(`wss://mainnet.infura.io/ws/v3/${infuraProjectId}`)

  const weenusContract = new web3.eth.Contract(abi, tokenAddress);
const getTokenBalance = useCallback(async () => {
    let tokenBalance = accounts && accounts.length > 0 ? await contract.methods.balanceOf(accounts[0]).call().then(receipt=> {return receipt}) : 'unknown';
    setTokenBalance(tokenBalance);
  }, [accounts])

  useEffect(()=>{
    getTokenBalance();
  }, [accounts, getTokenBalance])