在javascript中使用this.setState更新值时出现问题

在javascript中使用this.setState更新值时出现问题,javascript,reactjs,Javascript,Reactjs,我正在试图弄清楚为什么this.setState不更新该值 这是我一直试图更新状态的Javascript代码。这是我一直在研究的科学计算器的代码片段 代码段: oscBinaryOperation = () => { var inBoxVal = this.state.inBox.join(""); var x2 = parseFloat(inBoxVal); var retVal = 0; switch (opCode) { case 9: stac

我正在试图弄清楚为什么this.setState不更新该值

这是我一直试图更新状态的Javascript代码。这是我一直在研究的科学计算器的代码片段

代码段:

oscBinaryOperation = () => {
  var inBoxVal = this.state.inBox.join("");
  var x2 = parseFloat(inBoxVal);
  var retVal = 0;

  switch (opCode) {
    case 9:
      stackVal = parseFloat(stackVal) * Math.pow(10, x2);
      break;

    case 1:
      stackVal += x2;
      break;
    case 2:
      stackVal -= x2;
      break;

    case 3:
      stackVal *= x2;
      break;

    case 4:
      stackVal /= x2;
      break;

    case 6:
      var precisioncheck = stackVal;
      stackVal = Math.pow(stackVal, x2);

      if (
        precisioncheck === 10 &&
        stackVal % 10 !== 0 &&
        (Math.abs(stackVal) < 0.00000001 || Math.abs(stackVal) > 100000000) &&
        x2 % 1 === 0
      )
        stackVal = stackVal.toPrecision(7);
      break;

    case 5:
      stackVal = stackVal % x2;
      break;

    case 8:
      stackVal = Math.log(stackVal) / Math.log(x2);
      break;
    case 11:
      stackVal = (stackVal / 100) * x2;
      break;
    case 0:
      stackVal = x2;
      break;
    default:
      break;
  }
  retVal = stackVal;

  if (Math.abs(retVal) < 0.00000001 || Math.abs(retVal) > 100000000) {
  } else {
    if (retVal.toFixed(8) % 1 !== 0) {
      var i = 1;
      while (i < 10) {
        if (
          retVal.toFixed(i) !== 0 &&
          retVal.toFixed(i) / retVal.toFixed(i + 8) === 1
        ) {
          retVal = retVal.toFixed(i);
          break;
        } else {
          i++;
        }
      }
    } else {
      retVal = retVal.toFixed(0);
    }
  }

  this.setState({
    inBox: [retVal]
  });
  inBoxVal = retVal;
  boolClear = true;
  trig = 0;
  return retVal;
  // inBox.focus();
};
这里,当再次调用函数时,inBoxVal没有更新为retVal值,因此输出没有显示预期的答案。 例如:

如果
3*根(3)/2
2.598076211353316

它将
6
作为输出

this.setState({
  inBox: [retVal]
});