在javascript中使用this.setState更新值时出现问题
我正在试图弄清楚为什么this.setState不更新该值 这是我一直试图更新状态的Javascript代码。这是我一直在研究的科学计算器的代码片段 代码段:在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
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]
});