Reactjs 未处理的拒绝(TypeError):SimpleContact.methods.set不是函数
我正在尝试构建一个学生管理系统Dapp,其中学生的数据从前端获取并存储在智能合约中。为什么在尝试设置字段名的值(名称)时出现此错误。我需要进行哪些更改?下面是我的代码,请检查有什么问题。 下面是我的App.js代码 App.jsReactjs 未处理的拒绝(TypeError):SimpleContact.methods.set不是函数,reactjs,merge,frontend,solidity,smartcontracts,Reactjs,Merge,Frontend,Solidity,Smartcontracts,我正在尝试构建一个学生管理系统Dapp,其中学生的数据从前端获取并存储在智能合约中。为什么在尝试设置字段名的值(名称)时出现此错误。我需要进行哪些更改?下面是我的代码,请检查有什么问题。 下面是我的App.js代码 App.js import React, { useState } from 'react'; import Web3 from 'web3'; import { simpleStorageAbi } from './abi/abis'; import './App.css'; co
import React, { useState } from 'react';
import Web3 from 'web3';
import { simpleStorageAbi } from './abi/abis';
import './App.css';
const web3 = new Web3(Web3.givenProvider);
// contract address is provided by Truffle migration
const contractAddr = '0xd9145CCE52D386f254917e481eB44e9943F39138';
const SimpleContract = new web3.eth.Contract(simpleStorageAbi, contractAddr);
function App() {
const [name, setName] = useState();
const [getName, setGetName] = useState();
//const [dept, setDept] = useState();
//const [getDept, setGetDept] = useState();
const handleSet = async (e) => {
e.preventDefault();
const accounts = await window.ethereum.enable();
const account = accounts[0];
const gas = await SimpleContract.methods.set(name).estimateGas();
const result = await SimpleContract.methods.set(name).send({
from: account,
gas
})
console.log(result);
}
const handleGet = async (e) => {
e.preventDefault();
const result = await SimpleContract.methods.get().call();
setGetName(result);
console.log(result);
}
return (
<div className="App">
<header className="App-header">
<form onSubmit={handleSet}>
<label>
Name:
<input
type="text"
name="name"
value={name}
onChange={ e => setName(e.target.value) } />
</label>
<input type="submit" value="Set Name" />
</form>
<br/>
<button
onClick={handleGet}
type="button" >
Get Name
</button>
{ getName }
</header>
</div>
);
};
export default App;
import React,{useState}来自“React”;
从“Web3”导入Web3;
从“./abi/abis”导入{simplestrageabi};
导入“/App.css”;
const web3=新的web3(web3.givenProvider);
//合同地址由块菌迁移提供
const contractAddr='0xd9145CCE52D386f254917e481eB44e9943F39138';
const SimpleContract=新的web3.eth.Contract(simplestrageabi,contractAddr);
函数App(){
const[name,setName]=useState();
const[getName,setGetName]=useState();
//const[dept,setDept]=useState();
//常量[getDept,setGetDept]=useState();
常量handleSet=async(e)=>{
e、 预防默认值();
const accounts=wait window.ethereum.enable();
常量帐户=帐户[0];
const gas=wait SimpleContract.methods.set(name.estimateGas();
const result=wait SimpleContract.methods.set(name.send)({
发件人:账户,
煤气
})
控制台日志(结果);
}
const handleGet=async(e)=>{
e、 预防默认值();
const result=wait SimpleContract.methods.get().call();
setGetName(结果);
控制台日志(结果);
}
返回(
姓名:
setName(e.target.value)}/>
得名
{getName}
);
};
导出默认应用程序;
下面是我的坚固性代码。
simplestreage.sol
pragma solidity >=0.4.22 <0.9.0;
contract SimpleStorage{
string name;
string dept;
uint phonenumber;
string addresshome;
string emailid;
uint aadhar;
string ipfshash1;
string ipfshash2;
string ipfshash3;
string ipfshash4;
constructor() public {
phonenumber=0;
aadhar=0;
}
function setname(string memory _name) public returns(string memory){
name=_name;
}
function getname() public view returns(string memory){
return name;
}
function getdept(string memory _dept) public pure returns(string memory){
return _dept;
}
function getphonenumber(uint _phonenumber) public pure returns(uint){
return _phonenumber;
}
function getaddresshome(string memory _addresshome) public pure returns(string memory){
return _addresshome;
}
function getemailid(string memory _emailid) public pure returns(string memory){
return _emailid;
}
function getaadhar(uint _aadhar) public pure returns(uint){
return _aadhar;
}
}
pragma-solidity>=0.4.22