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



引用的文档:https://usedapp.readthedocs.io/en/latest/guide.html#custom-挂钩

package.json中usedapp的版本:"usedapp/core":"0.11.0〃;

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

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

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

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

构建应用程序后,我看到以下错误:错误屏幕截图

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

我能够显示替换useCall部件的供应:

const {value: message} = useCall({
contract: ethContract,
method: "totalSupply",
args: []
}) ?? {}
return String(message)

环境:ERC721合同,本地安全帽节点(31337(,使用0.12

相关内容

最新更新