首页
学习
活动
专区
圈层
工具
发布

Wagmi薄荷
EN

Ethereum用户
提问于 2022-12-04 09:51:14
回答 1查看 393关注 0票数 0

我在dapp中使用Wagmi钩子。另外,我还用RainbowKit来连接钱包。现在,我正在尝试使用Wagmi来执行我的智能合同的mint功能。如图所示,它需要三个参数。

代码语言:javascript
复制
function mint(uint256 _amount, string memory _uri, bytes memory _data) public onlyOwner {}

我知道,要通过Wagmi发出事务获得适当的结果,我们需要按顺序填充这些钩子,usePrepareContractWrtie()、useContractWrite()和useWaitForTransaction()

现在让我们看看我的问题是什么。在我的usePrepareContractWrite()中,我将一些固定的参数传递给mint函数,以实践这种方法的工作方式。例如,[100,"",[]] (根据我的合同的薄荷功能)。对我来说效果很好。

但是,每当尝试使用表单输入(动态参数)时,都会遇到错误,这些输入存储在组件中的useState()钩子中。换句话说,我只能基于固定的条件来创建标记,并且还不能根据我的输入来创建NFT。

代码语言:javascript
复制
const { config } = usePrepareContractWrite({
    address: f_nftaddress,
    abi: F_NFT.abi,
    functionName: 'mint',
    args: [ 200, "", []],
})

我的表单输入声明:

代码语言:javascript
复制
const [ formInput, updateFormInput ] = useState({ quantity: "", name: "", description: "" });
const [ tokenUrl, setTokenUrl ] = useState(null);

usePrepareContractWrite()中,在args: [ 200, "", []]中,我需要用formInput.quantitiy代替200,用tokenUrl代替""

有人能帮我解决这个问题吗?

提前感谢

EN

回答 1

Ethereum用户

发布于 2022-12-05 01:51:53

要在usePrepareContractWrite()钩子中使用表单输入值,可以从formInput状态中对值进行重构,并将它们作为参数传递到args属性中。例如:

代码语言:javascript
复制
const { quantity, name, description } = formInput;
const { config } = usePrepareContractWrite({
  address: f_nftaddress,
  abi: F_NFT.abi,
  functionName: "mint",
  args: [quantity, tokenUrl, [name, description]],
});

这将在tokenUrl ()钩子的args属性中使用来自formInput状态和tokenUrl状态的quantity和tokenUrl值。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/140537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档