Javascript 反应计算器-等号逻辑

Javascript 反应计算器-等号逻辑,javascript,reactjs,codepen,Javascript,Reactjs,Codepen,大家好,我需要一些关于react计算器测试项目的帮助,我正在为freecodecamp工作,以下是我到目前为止的代码: 我知道了如何在每次我点击等号时计算输入方程,但我很难尝试解决或设置背后的逻辑,因此每次我输入一个数字时,它将替换初始值,但如果我输入一个运算符,它将重复使用旧的计算值 我还没有添加%和正/负功能,我会在得到等号背后的逻辑后立即添加它。此外,上面的状态显示是临时的,因此我可以看到每个操作的更改。需要帮助,谢谢 所以你已经完成了大部分工作来得到你想要的东西。我没有详细研究您的代码,

大家好,我需要一些关于react计算器测试项目的帮助,我正在为freecodecamp工作,以下是我到目前为止的代码:

我知道了如何在每次我点击等号时计算输入方程,但我很难尝试解决或设置背后的逻辑,因此每次我输入一个数字时,它将替换初始值,但如果我输入一个运算符,它将重复使用旧的计算值


我还没有添加%和正/负功能,我会在得到等号背后的逻辑后立即添加它。此外,上面的状态显示是临时的,因此我可以看到每个操作的更改。需要帮助,谢谢

所以你已经完成了大部分工作来得到你想要的东西。我没有详细研究您的代码,我只是将其弯曲以实现您想要的功能,而没有真正理解它或检查其副作用,但这应该为您提供一个起点:

还有,这是一个很酷的功能,因为你使用的是巴别塔。您不需要显式地将
绑定到所有类函数。您可以只使用类箭头函数。请参阅我添加的
resetState
功能

evalEquation(){
    const {equation, calculations, output,operatorFlag,equalsFlag} = this.state;
    const finalEquation = equation.replace(/\x/g,'*').replace(/\÷/g,'/');
    const answer = String(math.eval(finalEquation));

    if(equalsFlag === false){
      this.setState({
        equation: answer,
        output: answer,
        equalsFlag: true
      });
    } 

    this.playAudio();
  }