reactjs Uncaught(in promise)错误:函数“getDonators”需要1个参数,但提供了undefined

s5a0g9ez  于 2023-04-20  发布在  React
关注(0)|答案(2)|浏览(168)

我正在构建一个众筹区块链应用程序,我得到了上面的错误。
Uncaught(in promise)错误:函数“getDonators”需要% 1个参数,但提供了未定义的参数。需要函数签名:contract.call(“getDonators”,_id:BigNumberish):Promise〈string[],BigNumber[]〉
这是我调用getDonators函数的部分代码

const getDonations = async (pId) => {
    const donations = await contract.call('getDonators', pId); //HERE! 
    const numberOfDonations = donations[0].length;

    const parsedDonations = [];

    for(let i = 0; i < numberOfDonations; i++) {
      parsedDonations.push({
        donator: donations[0][i],
        donation: ethers.utils.formatEther(donations[1][i].toString())
      })
    }

    return parsedDonations;
  }

这是Solidity文件中的代码

function getDonators(uint256 _id) view public returns (address[] memory, uint256[] memory) {
        return (campaigns[_id].donators, campaigns[_id].donations);

请帮助我解决此问题。我是否没有正确传递参数?
我试着用不同的方式传递参数,但它并没有真正解决这个问题。我还试着用不同的方式调用函数(在.sol文件中),如下所示:

await contract.donateToCampaign(pId, {
    value: ethers.utils.parseEther(amount.toString())
  });
jvidinwx

jvidinwx1#

我在你的代码中看到的可能的错误来自这一行:
const getDonations = async(pId)=〉{
pId最初可能是undefined。尝试console.log以查看它是否实际上是整数

const getDonations = async (pId) => {
    console.log('pId:', pId); //Add the code here
    const donations = await contract.call('getDonators', pId);
//...
vojdkbi0

vojdkbi02#

UPD:我实际上解决了这个错误,将错误的代码行替换为:

const donations = await contract.call('getDonators', [pId]); //HERE!

https://portal.thirdweb.com/typescript/sdk.smartcontract.call

相关问题