Web3js

如何在 React 中從 Solidity 列印“字元串”?

  • July 5, 2019

我的智能合約功能是:

function sNName(uint z)public view returns(string memory) {
   return abc[xyz[z].name];
}

其中 abc 表示映射(bytes32 => string)

在我的 .js 文件中,我這樣呼叫函式:

for(x=0 ;x < t; x++)
{
 n = await marketplaceContract.methods.sNName(x).call().toString();
 this.setState(prevState => ({
   cart: [...prevState.cart, n]
 }));
}

當我嘗試輸出購物車時,我得到:

[object Promise]

我期待一個字元串 cos 我用過 await。在循環中使用它有什麼錯誤嗎?

請幫忙。

改變這個:

n = await marketplaceContract.methods.sNName(x).call().toString()

對此:

n = (await marketplaceContract.methods.sNName(x).call()).toString()

順便說一句,我相信n在你打電話之前那是一個字元串toString()

如果我是對的,那麼您可以簡單地執行以下操作:

n = await marketplaceContract.methods.sNName(x).call()

通常,您的問題是該toString()部分優先於該部分,因此您實際上是在await嘗試應用於對象。toString``Promise

引用自:https://ethereum.stackexchange.com/questions/72587