我们可以通过Web3.js库中的智能合约实例来调用智能合约的公共纯函数。首先确保使用Web3.js库并已成功连接到以太坊网络。
然后,我们需要将智能合约abi和address传递给智能合约实例,以便实例化它。在React组件中,我们可以使用useEffect钩子来实例化合约并在组件挂载后设置它的状态,以便我们可以调用它的方法。
以下是一个简单的示例:
import React, { useState, useEffect } from "react";
import Web3 from "web3";
import MyContract from "./contracts/MyContract.json";
function App() {
const [contractInstance, setContractInstance] = useState(null);
const [myData, setMyData] = useState(null);
useEffect(() => {
async function getContract() {
try {
// Get network provider and web3 instance.
const web3 = new Web3(Web3.givenProvider || "http://localhost:8545");
// Get the contract instance.
const networkId = await web3.eth.net.getId();
const deployedNetwork = MyContract.networks[networkId];
const instance = new web3.eth.Contract(
MyContract.abi,
deployedNetwork && deployedNetwork.address
);
setContractInstance(instance);
} catch (error) {
console.error(error);
}
}
getContract();
}, []);
async function fetchData() {
const result = await contractInstance.methods.myPureFunction().call();
setMyData(result);
}
return (
{myData && My Data: {myData}
}
);
}
export default App;
在此示例中,我们使用MyContract.json文件中的abi和address实例化了智能合约,并在React组件中设置了状态以便调用myPureFunction方法。在fetchData函数