如何在字符串中使用set

时间:2019-04-27 18:07:02

标签: reactjs solidity

我正在使用智能合约更新区块链上的值,但是set方法仅接受整数。

此handleSubmit事件设置新的存储值并获取响应以确认其已更新。

async handleSubmit(event) {
    alert('A value was submitted: ' + this.state.newValue);
    event.preventDefault();
      // Use web3 to get the user's accounts.
      const { accounts, contract } = this.state;
      await contract.methods.set(this.state.newValue).send({ from: accounts[0] });
      const response = await contract.methods.get().call();
      this.setState({storageValue: response});

这是智能合约

pragma solidity ^0.5.0;

contract SimpleStorage {
string storedData;


function set(string x) public {
   storedData = x;
  }

  function get() public view returns (string) {
    return storedData;
  }
}

1 个答案:

答案 0 :(得分:0)

在Solidity v0.5.0中,它在重大更改列表中指出:

  

所有结构,数组或映射变量的显式数据位置   现在必须输入类型。这也适用于功能参数   并返回变量。

由于字符串是实体数组,因此您需要提及字符串的数据位置。

所以您的代码应该看起来像

function set(string memory x) public {
   storedData = x;
  }

  function get() public view returns (string memory) {
    return storedData;
  }
}