React
EthersJS:如何獲取視圖函式的結果
我真的不明白如何查看簡單視圖函式的結果。我有以下函式需要查詢 ERC-721 合約的令牌 URI:
export const getTokenURI = async (tokenContract, tokenId) => { try { const contractABI = [ "function tokenURI(uint256 _tokenId) returns (string memory)", ]; const contractObject = new ethers.Contract( tokenContract, contractABI, signer ); const result = await contractObject.tokenURI(tokenId); console.log(result); return result; } catch (err) { throw err; } };
這會在下面的螢幕截圖中記錄有效負載:
現在,該
tokenURI
函式返回一個 URI 字元串,但我在上面的有效負載中看不到它。我懷疑它在data
現場,但是如何解碼呢?我在這裡錯過了一些基本的東西嗎?
您需要
view
在 Human Readable ABI 中標記該功能。:)const contractABI = [ "function tokenURI(uint256 _tokenId) external view returns (string memory)", ];
如果您不這樣做,ethers.js 會認為它是一種狀態更改方法,因此會為此建構一個事務,而不是簡單的
eth_call
.