我正在用react构建一个简单的应用程序,但是lottery.methods.manager().call(); var管理器= var manager =等待永远不会检索值,我怎么可能会出错呢?
lottery.js
import web3 from './web3';
const address = '0x430b45dcf781d58e73CeeA288b4196B6ddeE4d7E';
const abi = [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"enter","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getPlayers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pickWinner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"players","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"random","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}];
const cont = new web3.eth.Contract(abi,address);
export default cont;App.js
import React,{Component} from 'react';
import logo from './logo.svg';
import './App.css';
import web3 from './web3';
import lottery from './lottery';
class App extends Component {
constructor (props){
super(props);
this.state = {"manager":''};
}
async componentDidMount(){
console.log("componentDidMount fired");
var manager = await lottery.methods.manager().call();//never set manager var
this.setState({manager});
}
render() {
return (
<div>
<h2>Lottery contract</h2>
<p>This contract is managed by {this.state.manager}</p>
</div>
);
}
}
export default App;web3.js
import Web3 from "web3";
const web3 = new Web3(window.ethereum);//Web3(window.web3.currentProvider);
export default web3;

请给我任何建议,谢谢。
发布于 2022-04-07 07:51:25
对我起作用的是在https://remix.ethereum.org/上编译我的合同,并从那里复制abi。
const abi = [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "enter",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "getPlayers",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "manager",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pickWinner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "players",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
];
发布于 2021-10-29 01:42:20
那里。
我一直在寻找继续这个培训项目,很多时候,我认为我有一些配置不好的方式,我测试了我所使用的每一种技术。在测试的最后,元问题扩展,我发现我的元问题有问题,好吧,我卸载,然后重新安装它。沃拉。这是工作。
对不起,如果我不能说一些技术细节,但我的信息有类似问题的人,它没有给up...hahaha

发布于 2022-05-25 19:26:10
塞巴的回答是什么对我有用。使用Remix在线编辑器编译和部署。然后,您可以复制有效的abi。
https://stackoverflow.com/questions/69616553
复制相似问题