1

i want to use the 'set' function ,but the console tell me that i have a wrong ,it also can say that 'set is not a function ',you can see this :


import React, { Component } from "react";
import SimpleStorageContract from "./contracts/SimpleStorage.json";
import getWeb3 from "./getWeb3";
import "./App.css";

var simpleinstance ;

class App extends Component {
  state = { storageValue: 0, web3: null, accounts: null, contract: null };

  componentDidMount = async () => {
    try {
      const web3 = await getWeb3();
      // Use web3 to get the user's accounts.
      const accounts = await web3.eth.getAccounts();
      // Get the contract instance.
      const networkId = await web3.eth.net.getId();
      // Get network provider and web3 instance.
      const deployedNetwork = SimpleStorageContract.networks[networkId];

      const instance = new web3.eth.Contract(SimpleStorageContract.abi
        ,deployedNetwork && deployedNetwork.address,);
        simpleinstance=instance;

      // Set web3, accounts, and contract to the state, and then proceed with an
      // example of interacting with the contract's methods.
      this.setState({ web3, accounts, contract: instance }, this.runExample);
    } catch (error) {
      // Catch any errors for any of the above operations.
      alert(
        `Failed to load web3, accounts, or contract. Check console for details.`,
      );
      console.error(error);
    }
  };
  // runExample = async () => {
  //   const { accounts, contract } = this.state;

  //   // Stores a given value, 5 by default.
  //   await contract.methods.set(1000).send({ from: accounts[0] });

  //   // Get the value from the contract to prove it worked.
  //   const response = await contract.methods.get().call();

  //   // Update state with the result.
  //   this.setState({ storageValue: response });
  // };

  render() {
    if (!this.state.web3) {
      return <div>Loading Web3, accounts, and contract...</div>;
    }
    return (
      <div className="App">
        <h1>Good to Go!</h1>
        <p>Your Truffle Box is installed and ready.</p>
        <h2>Smart Contract Example</h2>
        <p>
          If your contracts compiled and migrated successfully, below will show
          a stored value of 1000 (by default).
        </p>
        <p>
          Try changing the value stored on <strong>line 40</strong> of App.js.
        </p>
        <div>The stored value is: {this.state.storageValue}</div>
        <input style={{width:200,height:20}} ref='Change_data_Input'></input>
        <button style={{width:40,height:20}}
        onClick={()=>{
          var value=this.refs.Change_data_Input.value;

          simpleinstance.methods.set(value).send({from:this.state.web3.eth.getCoinbase()}).then((result)=>{
            console.log("helloworld");
          })
          }}>修改</button>
      </div>
    );
  }
}
export default App;

the main question is here !but i don't know how to call the 'set' function..

         simpleinstance.methods.set(value).send({from:this.state.web3.eth.getCoinbase()}).then((result)=>{
            console.log("helloworld");
          })
ZHBoKn
  • 11
  • 1

0 Answers0