Bha*_*iya 1 javascript reactjs react-redux react-hooks
我试图在触发后更新状态,并希望立即使用该状态来触发函数,但状态不会立即更新。
有什么建议 ?
<Button
onClick={() => {
console.log(finalData) //old data
setFinalData(mutableData); // updating state
console.log(finalData) // still geeting old state
}>
</Button>
Run Code Online (Sandbox Code Playgroud)
setFinalData是一种异步行为,所以如果您:
console.log(finalData) //old data
setFinalData(mutableData); // <----- async behavior
console.log(finalData) // you will never get updated finalData directly here
Run Code Online (Sandbox Code Playgroud)
解决方案 :useEffect
useEffect(() => {
// you will get updated finalData here, each time it changes
console.log(finalData);
// you can trigger your function from here
},[finalData]);
Run Code Online (Sandbox Code Playgroud)
这是代码片段,希望这能消除您的疑虑:
console.log(finalData) //old data
setFinalData(mutableData); // <----- async behavior
console.log(finalData) // you will never get updated finalData directly here
Run Code Online (Sandbox Code Playgroud)
useEffect(() => {
// you will get updated finalData here, each time it changes
console.log(finalData);
// you can trigger your function from here
},[finalData]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9879 次 |
| 最近记录: |