abl*_*cz1 8 javascript reactjs
我希望我aysnc function对状态变化做出反应,以便它可以在状态变化时终止。我发现它对改变状态没有反应。
在提供的示例中,我正在从函数内部更改状态,但是我已经对其进行了测试并从函数外部更改了状态(单击按钮),但它也不起作用。
const [testVariable, setTestVariable] = useState(false);
useEffect(()=> {
testFunction();
}, [])
const testFunction = async () => {
await timeout(1000);
console.log("Setting test variable to: " + true);
setTestVariable(true);
await timeout(1000);
console.log("Test variable is: " + testVariable);
}
Run Code Online (Sandbox Code Playgroud)
Que*_*tin 10
状态变量永远不会改变它们的值。(请注意,您可以、拥有并且应该声明它们,const因为它们不会改变)。
组件函数的后续调用将获得一个具有相同名称和不同值的新状态变量。
\n您的testFunction函数已关闭旧的状态变量。
我怀疑你可以通过参考解决这个问题:
\nconst [testVariable, setTestVariable] = useState(false);\nconst reference = useRef();\nreference.current = testVariable;\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x80\xa6 然后让你的函数测试 的值reference.current而不是testVariable。
然而,这确实感觉像是一个XY 问题,其中真正的解决方案是“使用您传递给的函数的返回值来useEffect停止您想要停止的任何内容”(并用作testVariable的依赖项useEffect)。
| 归档时间: |
|
| 查看次数: |
18237 次 |
| 最近记录: |