如何使用 wagmi.sh 挂钩 (useSendTransaction) 发送 ERC20 代币(非原生代币)?
这是标准的反应钩子:
import { useSendTransaction, usePrepareSendTransaction } from 'wagmi'
function App() {
const { config } = usePrepareSendTransaction({
request: { to: 'moxey.eth', value: BigNumber.from('10000000000000000') },
})
const { data, isLoading, isSuccess, sendTransaction } =
useSendTransaction(config)
return (
<div>
<button disabled={!sendTransaction} onClick={() => sendTransaction?.()}>
Send Transaction
</button>
{isLoading && <div>Check Wallet</div>}
{isSuccess && <div>Transaction: {JSON.stringify(data)}</div>}
</div>
)
}
我们可以在请求中添加数据字段并将代币合约地址作为值分配给它吗?
import { useSendTransaction, usePrepareSendTransaction } from 'wagmi'
function App() {
const { config } = usePrepareSendTransaction({
request: { to: 'moxey.eth', value: BigNumber.from('10000000000000000'), data: "contract address.." },
})
const { data, isLoading, isSuccess, sendTransaction } =
useSendTransaction(config)
return (
<div>
<button disabled={!sendTransaction} onClick={() => sendTransaction?.()}>
Send Transaction
</button>
{isLoading && <div>Check Wallet</div>}
{isSuccess && <div>Transaction: {JSON.stringify(data)}</div>}
</div>
)
}
我尝试使用useContractWrite,但出现错误
const { config: configMoney } = usePrepareContractWrite({
address: '0xdAC17...',
abi: erc20ABI,
chainId: 1,
gas: BigInt(1 * 10 ** 6))
functionName: 'transfer',
args: ['0x21406914D512535762.....', BigInt(1.00211 * 10 ** 18)],
onError(error) {
console.log('Error', error);
}
});
const { write: sendMoney } = useContractWrite(configMoney);
你找到解决方案了吗?我也一直在找