代码之家  ›  专栏  ›  技术社区  ›  AKon

Solidity函数修改值失败

  •  1
  • AKon  · 技术社区  · 6 年前

    使用Truffle开发框架(web3、react和solidity)测试一个简单的智能合约。当我按下UI上的一个按钮时,我正在测试一个基本功能,但它似乎没有按我预期的方式工作。我希望合同能够增值并返回true。请注意,该值稍后将显示在前端,因为这是我正在使用的。代码如下:

    实体合同

        uint total = 0;
    
        function setTotalValue() public returns(bool) {
    
        total = total + 2;
        return true;
    }
    

    应用程序。js公司

    enter code here
    
    async modifyTotal() {
    
    fantasyInstance.setKittyValue.call().then(function(res) {
      console.log(res); //THIS RETURNS FALSE TO THE CONSOLE
    });
    

    为了澄清,单击HTML按钮时会调用ModifityTotal。console语句返回一个值“false”,实际总值似乎永远不会改变。有什么想法吗?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Adam Kipnis    6 年前

    您的JS代码与合同代码不匹配,您省略了检索contact实例的代码部分,但我猜您的问题是您正在使用 call 而不是 sendTransaction . 呼叫 在本地节点中执行该方法,而不更改状态。您应该仅将其用于测试或常量函数。请参见 web3js documentation .