хорошо, я развернул умный контракт на тест 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;