Проблема с реагированием. js и ethereum твердость - PullRequest
0 голосов
/ 22 февраля 2020

хорошо, я развернул умный контракт на тест rinkeby net, и я связал его с внешним интерфейсом с помощью реакции. js и далее. js. так что моя проблема в том, что когда я вызвал функцию register (), а затем вызвал функцию isRegistered (), она возвращает true в remix, но false в моем интерфейсе

моего контракта:


contract Seller {
    struct Detail {
        bool applied;
        string description;
        string email;
    }

    mapping(address => Detail) public details;

    function register(string memory _email, string memory _description) public {
        require(!details[msg.sender].applied);
        details[msg.sender].description = _description;
        details[msg.sender].email = _email;
        details[msg.sender].applied = true;
    }

    function isRegistered() public view returns (bool) {
        return details[msg.sender].applied;
    }

}

мой интерфейс, использующий реагирование. js

import React, { Component } from "react";
import seller from "../../ethereum/Seller";
import Layout from "../../components/Layout";
import { Button } from "semantic-ui-react";
import { Link } from "../../routes";
import web3 from "../../ethereum/web3";
class Seller extends Component {
  state = {};
  async renderAccounts() {
    const accounts = await web3.eth.getAccounts();
    this.setState({ accounts });
    const registered = await seller.methods.isRegistered().call();
    this.setState({ registered });
    console.log(await seller.methods.isRegistered().call());
  }

  render() {
    // let accounts;
    this.renderAccounts();
    return (
      <Layout>
        <h3>Account:{this.state.accounts}</h3>
        {this.state.registered ? (
          <h3>you are registered </h3>
        ) : (
          <div>
            <h3>
              you are not registered plz register by click on button below:
            </h3>
            <Link route={`/seller/new`}>
              <a>
                <Button primary>Register!</Button>
              </a>
            </Link>
          </div>
        )}
      </Layout>
    );
  }
}

export default Seller;

мой / продавец / новая страница

import React, { Component } from "react";
import { Form, Button, Input, Accordion } from "semantic-ui-react";
import Layout from "../../components/Layout";
import seller from "../../ethereum/Seller";
import web3 from "../../ethereum/web3";

class newResgistration extends Component {
  state = { description: "", email: "" };

  onSumbit = async event => {
    event.preventDefault();
    const accounts = await web3.eth.getAccounts();
    await seller.methods
      .register(this.state.email, this.state.description)
      .send({ from: accounts[0] });
  };
  render() {
    return (
      <Layout>
        <Form onSubmit={this.onSumbit}>
          <Form.Field>
            <label>Description</label>
            <Input
              value={this.state.description}
              onChange={event =>
                this.setState({ description: event.target.value })
              }
            />
          </Form.Field>
          <Form.Field>
            <label>Email</label>
            <Input
              value={this.state.email}
              onChange={event => this.setState({ email: event.target.value })}
            />
          </Form.Field>
          <Button primary>Submit</Button>
        </Form>
      </Layout>
    );
  }
}

export default newResgistration;


...