【发布时间】:2020-10-25 16:58:12
【问题描述】:
文件编译并呈现,但当我点击进入彩票按钮时,我收到此错误:
未处理的拒绝(TypeError):lottery__WEBPACK_IMPORTED_MODULE_5_.default.methods 不是函数
我认为我在部署的合同中遗漏了一些东西?但不知道如何解决。
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 {
state = {
manager: '',
players: [],
balance: '',
value: '',
message: ''
};
async componentDidMount() {
const manager = await lottery.methods.manager().call();
const players = await lottery.methods.getPlayers().call();
const balance = await web3.eth.getBalance(lottery.options.address);
this.setState({ manager, players, balance });
}
onSubmit = async (event) => {
event.preventDefault();
const accounts = await web3.eth.getAccounts
this.setState({ message: 'Waiting on transactions success...'});
await lottery.methods().send({
from: accounts[0],
value: web3.utils.toWei(this.state.value, 'ether')
});
this.setState({ message: 'You have been entered!'});
};
render() {
return (
<div>
<h2>Lottery Contract </h2>
<p>This contract is managed by {this.state.manager}
There are currently {this.state.players.length} people entered,
competing to win {web3.utils.fromWei(this.state.balance, 'ether')} ether!
</p>
<hr />
<form onSubmit={this.onSubmit}>
<h4>Want to try your luck? </h4>
<div>
<label> Amount of ether to enter </label>
<input
value={this.state.value}
onChange={event => this.setState({ value: event.target.value })}
/>
</div>
<button> Enter </button>
</form>
<hr />
<h1> {this.state.message} </h1>
</div>
);
}
}
export default App;
【问题讨论】: