首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用useDapp的useCall钩子时未定义的契约地址

使用useDapp的useCall钩子时未定义的契约地址
EN

Stack Overflow用户
提问于 2022-02-17 08:35:29
回答 1查看 662关注 0票数 0

参考文档:https://usedapp.readthedocs.io/en/latest/guide.html#custom-hooks

Package.json中的usedapp版本:"@usedapp/core":"^0.11.0“

我使用useCall钩子调用我的函数之一,该函数返回一个显示总供应量的整数。这是我的定制钩子:

代码语言:javascript
复制
import { useCall } from "@usedapp/core"
import { Contract } from '@ethersproject/contracts'

const useTotalSupply = (contractAddress, ethInterface) => {
   const ethContract = new Contract(contractAddress, ethInterface)
   console.log("Found address for contract object: " + ethContract.address)
   const { value, error } = useCall(
       ethContract,
       'getTotalCurrentSupply',
       []) ?? {}
   if (error) {
       console.error(error.message)
       return -1 
   }
   return value?.[0] 
}

export default useTotalSupply

这就是我在组件中使用钩子的方式

代码语言:javascript
复制
const MintCounter = () => {

   const totalSupply = useTotalSupply(ethContractAddress, ethInterface)
   return (
       <Box>
           <Stat>
               <StatLabel>Total Mints</StatLabel>
               <StatNumber>{totalSupply}</StatNumber>
           </Stat>
       </Box>
   )
}

在构建我的应用程序之后,我看到了以下错误:错误截图

我对这个错误感到有点困惑,因为我正在传递契约实例,我可以看到contract.address值已经设置,并且在控制台输出中看到了地址字符串。我在使用这个钩子时有没有遗漏什么?提前感谢

EN

回答 1

Stack Overflow用户

发布于 2022-04-02 10:24:30

我能够展示替代useCall部件的供应:

代码语言:javascript
复制
    const {value: message} = useCall({
    contract: ethContract,
    method: "totalSupply",
    args: []
    }) ?? {}

   return String(message)

环境: ERC721契约,本地硬帽子节点(31337),usedapp 0.12

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

https://stackoverflow.com/questions/71154740

复制
相关文章

相似问题

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