我不明白我的代码有什么问题。我知道这个问题经常被问到,但是经过一些尝试,我无法解决我的问题。在发布内容之前,我尝试遵循以下问题:
问题
在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()
之前,我可以做些什么来更新数组?