我有一个使用 useState 初始化状态的功能组件,然后通过输入字段更改该状态。
\n\n然后,我有一个模拟 componentWillUnmount 的 useEffect 挂钩,以便在组件卸载之前,将当前更新的状态记录到控制台。但是,会记录初始状态而不是当前状态。
\n\n这是我想要做的事情的简单表示(这不是我的实际组件):
\n\nimport React, { useEffect, useState } from \'react\';\n\nconst Input = () => {\n const [text, setText] = useState(\'aaa\');\n\n useEffect(() => {\n return () => {\n console.log(text);\n }\n }, [])\n\n const onChange = (e) => {\n setText(e.target.value);\n };\n\n return (\n <div>\n <input type="text" value={text} onChange={onChange} />\n </div>\n )\n}\n\nexport default Input;\nRun Code Online (Sandbox Code Playgroud)\n\n我将状态初始化为“初始”。然后我使用输入字段来更改状态,假设我输入“新文本”。但是,当组件卸载时,控制台将记录“初始”而不是“新文本”。
\n\n为什么会出现这种情况?如何在卸载时访问当前更新的状态?
\n\n非常感谢!
\n\n编辑:
\n\n将文本添加到 useEffect 依赖项数组并不能解决我的问题,因为在我的现实场景中,我想要做的是根据当前状态触发异步操作,并且它不会 \xe2\x80\x99t每次 \xe2\x80\x9ctext\xe2\x80\x9d 状态更改时都可以有效地执行此操作。
\n\nI\xe2\x80\x99m 正在寻找一种仅在组件卸载之前获取当前状态的方法。
\n