如何使用wagmi智能合约中的重载函数?

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

所以我的 Solidity 智能合约中有两个名称相同但参数不同的函数

functionName(args1)
functionName(args1, args2)

并且由于此函数重载,智能合约的 ABI 有 2 个具有完全相同名称的函数,

functionName
有 1 个参数,
functionName
有 2 个参数

当我尝试使用 wagmi useContractWrite 来调用第一个函数时:

const functionWrite = useContractWrite({
  ...ContractInstance,
  functionName: 'functionName',
  args: [args1],
});

或调用第二个函数

const functionWrite = useContractWrite({
...ContractInstance,
functionName: 'functionName',
args: [args1, args2],
});

由于名称重复,wagmi 似乎没有检测到该函数,它给了我这个错误:

'functionName' doesn't exist in interface for contract "{my contract address}"

有人知道如何在 wagmi 中使用重载函数吗?

javascript smartcontracts web3js
2个回答
2
投票

我一直在寻找这个,只是做了一些尝试和错误来弄清楚。自从我开始工作以来,我想我会回来给你和其他人一个答案。

const functionWrite = useContractWrite({
    ...ContractInstance,
    functionName: 'functionName(arg1Type, arg2Type)',
    args: [args1, args2],
});

这应该将函数签名传递给底层的以太坊调用。


0
投票

我认为这个方法从 wagmi 1.0.0 开始不起作用 有人能找到更新的方法吗?

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