如何从 React 前端客户端应用程序调用 solidity fallback 函数
how to call solidity fallback function from react front end client app
在我的 solidity 智能合约中有一个回退函数如下:
contract MyContract {
//rest of contract
...
//**Fallback function**
function () payable external {}
}
在我的 React 客户端应用程序中,我有以下代码片段:
...
const instance = new web3.eth.Contract(
MyContract.abi,
deployedNetwork && deployedNetwork.address,
);
...
await instance.methods.send({from:this.state.accounts[0],value:this.state.chargeValue})
...
在控制台日志中出现以下错误
TypeError: this.state.contract.methods.send 不是一个函数
在合约javascript测试脚本中,我可以使用以下代码调用回退函数:
const MyContractInstance = await MyContract.deployed();
await MyContractInstance .sendTransaction({value:"1000000000000000000" });
您可以构建一个缺少 data
字段的交易,而不是创建 Contract
实例并使用其辅助方法(没有辅助方法来执行回退函数)。
await web3.eth.sendTransaction({
to: deployedNetwork.address,
from: this.state.accounts[0],
value: this.state.chargeValue
});
如果您不指定data
字段,它将为空,这将导致执行合约回退功能。
文档:https://web3js.readthedocs.io/en/v1.3.4/web3-eth.html#sendtransaction
在我的 solidity 智能合约中有一个回退函数如下:
contract MyContract {
//rest of contract
...
//**Fallback function**
function () payable external {}
}
在我的 React 客户端应用程序中,我有以下代码片段:
...
const instance = new web3.eth.Contract(
MyContract.abi,
deployedNetwork && deployedNetwork.address,
);
...
await instance.methods.send({from:this.state.accounts[0],value:this.state.chargeValue})
...
在控制台日志中出现以下错误 TypeError: this.state.contract.methods.send 不是一个函数
在合约javascript测试脚本中,我可以使用以下代码调用回退函数:
const MyContractInstance = await MyContract.deployed();
await MyContractInstance .sendTransaction({value:"1000000000000000000" });
您可以构建一个缺少 data
字段的交易,而不是创建 Contract
实例并使用其辅助方法(没有辅助方法来执行回退函数)。
await web3.eth.sendTransaction({
to: deployedNetwork.address,
from: this.state.accounts[0],
value: this.state.chargeValue
});
如果您不指定data
字段,它将为空,这将导致执行合约回退功能。
文档:https://web3js.readthedocs.io/en/v1.3.4/web3-eth.html#sendtransaction