reactjs - 我在 react 的帮助下建立了一个简单的彩票合同,但在网页中出现错误
问题描述
我在网页中遇到错误:
返回值无效,它是否用尽了 Gas?如果您没有为要从中检索数据的合约使用正确的 ABI,您也可能会看到此错误,从块号请求数据。
#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() {
const manager = await lottery.methods.manager().call();
this.setState({
manager
});
}
render() {
return (
<div>
<h2> Lottery contract</h2>
<p>this contract if managed by {this.state.manager}</p>
</div>
);
}
}
export default App;
彩票.js
import web3 from './web3';
const address = '0xB722A2E673c55F8cD0B781f0683FDa70c46e3183';
const abi = [
{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pickWinner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getPlayers","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enter","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"players","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}];
export default new web3.eth.Contract(abi, address);
#node 部署.js
attmepting to deploy
[{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pickWinner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getPlayers","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enter","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"players","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]
deployed to 0xB722A2E673c55F8cD0B781f0683FDa70c46e3183
解决方案
我收到了同样的错误消息,这是因为我的元掩码不在 Rinkeby 网络上……一旦我切换,它就起作用了。
推荐阅读
- rust - 如何在 Bevy 中将父实体添加到场景中?
- wordpress - Wordpress Update 5.5.3 创建了一个新数据库
- android - 如何在 Unity 中获取手机缺口大小?
- django-models - 将三个模型转换为一个查询 django 查询
- javascript - 如何检测键盘按键上的点击事件:播放/暂停(▶/❚❚),Electron Js 上的 Next 和 Previous
- reactjs - 不知道如何在反应中实现这个过滤器
- arrays - 如何在 Typescript 中键入返回 2 个或多个字符串数组的交集的递归函数?
- loops - 使用 Fortran 读取二维表
- javascript - 如何将类删除到行 ID?
- android - Compose 中的列权重分布