Solidity
如何從 ReactJS 呼叫以結構為參數的合約函式?
我正在努力弄清楚如何在將結構作為參數(其中也有另一個結構)的契約中實際呼叫函式(使用 React)?
合約函式如下所示:
function createCampaign(CampaignInput calldata input_) external { //code here }
涉及的結構是:
struct ItemInput { string name; uint256 value; uint256 supply; } struct CampaignInput { string name; uint256 campaignType; ItemInput[] items; }
我已經在 React 中使用 Ethers.js 載入了合約,我試圖使用這段程式碼呼叫它,這顯然是非常錯誤的:
contract.createCampaign({"name",0,[]})
其他沒有 struct 作為參數的方法,使用上面的方法可以正常工作。
我的問題是我需要在上面的行中寫什麼,以便我可以將正確的論點傳遞給契約。
這取決於您用於與合約互動的 js 庫。
對於
Ethers
(也可能也是web3js
),您可以使用帶有鍵的對像或嵌套數組。所以對於你的例子:
const items = [ { name: "Item 1", value: 0, supply: 100 } ] contract.createCampaign({ name: "name", campaignType : 0, items })
我有一個類似的問題,使用 ethers.js 將結構表示為 dict。如果有人在將結構作為 javascript dict 傳遞時遇到問題,則數組可能會起作用:
[value1, value2]
代替
{key1 : value1, key2: value2}
沒用但是