我是使用 React 的打字稿新手,我对这段代码有问题@ setUsdtBalance(balance);谁能帮助我🙏
import React, { useState, useEffect } from 'react';
import Web3 from 'web3';
const web3 = new Web3('https://mainnet.infura.io/v3/759e4fcbf9b7449f854586fb65f43184');
function App() {
const [lastBlockNumber, setLastBlockNumber] = useState<bigint | null>(null);
const [usdtBalance, setUsdtBalance] = useState<string | null>(null);
const [address, setAddress] = useState<string>('');
useEffect(() => {
const fetchLastBlockNumber = async () => {
const blockNumber = await web3.eth.getBlockNumber();
setLastBlockNumber(blockNumber);
};
fetchLastBlockNumber();
}, []);
const handleAddressChange = (e: React.ChangeEvent<HTMLInputElement>) => {
setAddress(e.target.value);
};
const handleGetBalance = async () => {
if (!address) return;
const contractABI = [
{
"constant": true,
"inputs": [{ "name": "_owner", "type": "address" }],
"name": "balanceOf",
"outputs": [{ "name": "balance", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
}
];
const contractAddress = '0xdAC17F958D2ee523a2206206994597C13D831ec7';
const usdtContract = new web3.eth.Contract(contractABI, contractAddress);
const balance = await usdtContract.methods.balanceOf(address).call();
setUsdtBalance(balance);
};
任何人都可以帮助我,我不明白出了什么问题! 这是错误:
'void | 类型的参数[]| (unknown[] & [])' 不可分配给“SetStateAction
call
是需要单个泛型参数的泛型函数。如果没有为 call
提供类型 arg,则默认为 void | [] | (unknown[] & [])
。
如果您确信
balance
只能是string
,那么显式向call
提供字符串应该足以消除这些错误
const balance = await usdtContract.methods.balanceOf(address).call<string>();