我如何使用wagmi.sh钩子(useSendTransaction)发送ERC20代币?

问题描述 投票:0回答:2

如何使用 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>
  )
}
reactjs web3js erc20
2个回答
0
投票

我尝试使用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);

0
投票

你找到解决方案了吗?我也一直在找

© www.soinside.com 2019 - 2024. All rights reserved.