50 react前端调用状态变量的方法是,直接在实例中用状态变量名字加()吗?

1,这个是remix里的官方投票例子,里面有一个状态变量chairperson

image.png

2,前端是用chairperson().call()来调用获取值吗?

image.png

3,但是浏览器显示没有这个函数

image.png

请先 登录 后评论

最佳答案 2021-11-19 21:41

结论,使用 contract.methods.chairperson().call()

var Tx = require('ethereumjs-tx').Transaction

const Web3 = require('web3')
const rpcURL = "https://ropsten.infura.io/v3/你的 infura 地址"
const web3 = new Web3(rpcURL)

const abi = [{"inputs":[{"internalType":"bytes32[]","name":"proposalNames","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"chairperson","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"voter","type":"address"}],"name":"giveRightToVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"uint256","name":"voteCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposal","type":"uint256"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"voters","outputs":[{"internalType":"uint256","name":"weight","type":"uint256"},{"internalType":"bool","name":"voted","type":"bool"},{"internalType":"address","name":"delegate","type":"address"},{"internalType":"uint256","name":"vote","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"winnerName","outputs":[{"internalType":"bytes32","name":"winnerName_","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"winningProposal","outputs":[{"internalType":"uint256","name":"winningProposal_","type":"uint256"}],"stateMutability":"view","type":"function"}]

const contract = new web3.eth.Contract(abi, "0x6C722738D6A002d6E38847e6A354068892625403")

async function testFunction(){
    let a = await contract.methods.chairperson().call()
    console.log(a)
}

testFunction()

返回结果:

node app.js
0xed0FEa3Ab8Db41294ae954292866DEEd66dfD0a7
请先 登录 后评论

其它 1 个回答

Lemon
请先 登录 后评论
  • 2 关注
  • 0 收藏,2240 浏览
  • Aquaman 提出于 2021-11-19 20:32