Solidity 函数修改值失败
Solidity Function Modifying Value Failing
使用 Truffle 开发框架(web3、react 和 solidity)测试一个简单的智能合约。当我按下 UI 上的按钮时,我有一个正在测试的基本功能,但它似乎没有按我预期的方式工作。我希望合同增加价值并且 return 为真。请注意,该值稍后会显示在前端,因为这是我正在玩的。代码如下:
Solidity 合约
uint total = 0;
function setTotalValue() public returns(bool) {
total = total + 2;
return true;
}
App.js
enter code here
async modifyTotal() {
fantasyInstance.setKittyValue.call().then(function(res) {
console.log(res); //THIS RETURNS FALSE TO THE CONSOLE
});
需要说明的是,单击 HTML 按钮时会调用 modiftyTotal。控制台语句 return 的值为 "false" ,实际总值似乎从未改变过。有什么想法吗?
您的 JS 代码与合同代码不匹配,并且您省略了检索联系人实例的代码部分,但我猜您的问题是您使用的是 call
而不是 sendTransaction
。 call
在不改变状态的情况下执行本地节点中的方法。您应该只将它用于测试或常量函数。见 web3js documentation.
使用 Truffle 开发框架(web3、react 和 solidity)测试一个简单的智能合约。当我按下 UI 上的按钮时,我有一个正在测试的基本功能,但它似乎没有按我预期的方式工作。我希望合同增加价值并且 return 为真。请注意,该值稍后会显示在前端,因为这是我正在玩的。代码如下:
Solidity 合约
uint total = 0;
function setTotalValue() public returns(bool) {
total = total + 2;
return true;
}
App.js
enter code here
async modifyTotal() {
fantasyInstance.setKittyValue.call().then(function(res) {
console.log(res); //THIS RETURNS FALSE TO THE CONSOLE
});
需要说明的是,单击 HTML 按钮时会调用 modiftyTotal。控制台语句 return 的值为 "false" ,实际总值似乎从未改变过。有什么想法吗?
您的 JS 代码与合同代码不匹配,并且您省略了检索联系人实例的代码部分,但我猜您的问题是您使用的是 call
而不是 sendTransaction
。 call
在不改变状态的情况下执行本地节点中的方法。您应该只将它用于测试或常量函数。见 web3js documentation.