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 而不是 sendTransactioncall 在不改变状态的情况下执行本地节点中的方法。您应该只将它用于测试或常量函数。见 web3js documentation.