javascript - 用 const 声明的函数使用 useState 的旧值
问题描述
我有一个 React 组件(功能性),其中包含一个修改父组件状态的子组件。我为此使用了钩子useState。
状态更改后,父组件中有一个“下一步”按钮,该按钮执行引用更新状态的功能。问题是下一个函数使用状态被子组件修改之前的旧状态。
我不能在这里使用useEffect因为该功能需要在单击“下一步”按钮时执行,而不是在状态更改后立即执行。我对JavaScript 闭包做了一些挖掘,但没有一个答案能解决我的具体情况。
这是代码
const ParentComponent = () => {
const [myState, setMyState] = useState(0);
const handleNext = () => {
console.log(myState); // prints 0 which is the old value
}
return (
<ChildComponent modifyState = {setMyState} />
<Button onClick={handleNext} > Next </Button>
)
}
export default ParentComponent;
顺便说一句,没有错误。
解决方案
try to modify like this
<ChildComponent modifyState={(value) => setMyState(value)} />
推荐阅读
- flutter - 在提供程序中更改值时显示 showDialog
- java - 如何使用 Apache camel 查看来自 sqs 队列的消息?
- flask - 如何在 Flask 中的 Python 编码中添加静态路径?
- python - 函数输出 None 而不是 Return
- javascript - chrome.storage 检索值
- javascript - 从事令牌认证系统工作,有几个关于 jsonwebtoken 的问题
- ios - 想在挂起状态下杀死iOS App
- flutter - 在 Flutter 中使用 esc_pos_printer 包时无法以 Unicode 单词打印缅甸语(缅甸语)
- mysql - Next.js MySQL INSERT/UPDATE 查询似乎永远不会执行
- python - 如何仅增加字母数字值的数字值