回调后SetState不会更新

时间:2018-11-28 11:43:39

标签: javascript reactjs asynchronous

我不明白我的代码有什么问题。我知道这个问题经常被问到,但是经过一些尝试,我无法解决我的问题。在发布内容之前,我尝试遵循以下问题:

问题

printResult()之前更新数组的状态

我的代码

operationResult() {
  const expression = this.state.operations.join('');
  let result = 0;
  result = eval(expression);
  this.setState({
    operations: [result]
  }, function() {
    console.log(this.state.operations)
  });
  this.printResult();
}



handleInput = (e) => {
  const buttonClicked = e.target.value;

  switch (buttonClicked) {
    case 'clear':
      this.setState({
        operations: [],
      })
      break;

    case 'equal':
      this.operationResult()
      break;

    case 'float':
      break;

    case '±':
      if (this.state.operations == undefined) {
        console.log('error');
        return;
      }
      break;

    default:
      const newOperation = this.state.operations;
      newOperation.push(buttonClicked);
      this.setState({
        operations: newOperation
      })
      console.log(this.state.operations)
      break;
  }
}

我知道函数this.printResult()在setState中的回调之前起作用,因此在我调用它时operations的状态尚未更新。 在调用this.printResult()之前,我可以做些什么来更新数组?

0 个答案:

没有答案