【问题标题】:I'm trying to make a simple lottery contract with Solidity and React我正在尝试使用 Solidity 和 React 制作一个简单的彩票合约
【发布时间】: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;

【问题讨论】:

    标签: reactjs ethereum solidity


    【解决方案1】:

    lottery.methods() 有问题,尝试 console.log。有功能吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 2011-09-16
      • 2021-08-20
      • 2021-10-05
      • 2018-09-29
      • 2011-03-04
      • 1970-01-01
      相关资源
      最近更新 更多