我完全迷失了 React async setState :(
这就是我想要实现的目标:当我单击操作符按钮(App.js 第 81-98 行)时,我采用 current(new\updated) state.input
,用我的函数“格式化”它fixInput
(App.js 第 7-22 行,它接受state.input
和 event.target.textContent
,返回新字符串),并将结果设置为新state.input
值。
//Display.js
const Display = (props) => {
//on equals click show the output , if input continues , show input, change showoutput
let { input, output, showInput } = props;
return (
<div id="display" className="display_font">
{showInput ? input : output}
</div>
);
};
//Keypad.js
const Keypad = (props) => {
return (
<div id="keypad">
<button id="clear" onClick={props.handleCeClick}>
CE
</button>
<button id="seven" onClick={props.handleNumClick}>
7
</button>
<button id="eight" onClick={props.handleNumClick}>
8
</button>
<button id="nine" onClick={props.handleNumClick}>
9
</button>
<button id="add" onClick={props.handleOperClick}>
+
</button>
<button id="four" onClick={props.handleNumClick}>
4
</button>
<button id="five" onClick={props.handleNumClick}>
5
</button>
<button id="six" onClick={props.handleNumClick}>
6
</button>
<button id="subtract" onClick={props.handleOperClick}>
-
</button>
<button id="one" onClick={props.handleNumClick}>
1
</button>
<button id="two" onClick={props.handleNumClick}>
2
</button>
<button id="three" onClick={props.handleNumClick}>
3
</button>
<button id="multiply" onClick={props.handleOperClick}>
*
</button>
</div>
);
};
React setState 是异步的,并且不会立即更新,因此我只能访问以前的 state.input,我可以从 setState 回调记录到控制台当前状态,并且我需要设置一个新状态,这是我无法从回调中执行的。我无法访问当前状态,这就是为什么我的fixInput功能无法正常工作(按数字和重复运算符,例如4++,预计只允许添加运算符*-和的两种组合/-
我确实尝试过用我能想到的各种方式来改变事情。
我的方法有什么问题吗?我的结构可以做到这一点吗?
慕侠2389804
智慧大石
相关分类