Reactjs 在React hook组件卸载时,无法获取更新的状态变量值
单击“单击我”按钮后,我的计数值正在更新。现在,在卸载组件之前,我必须做一些事情,如果count大于0 但我注意到在调试器期间,计数值始终为0。当我期望计数应该大于0时,如果我多次单击 请帮助我,如何在组件卸载期间获取更新值。谢谢Reactjs 在React hook组件卸载时,无法获取更新的状态变量值,reactjs,react-hooks,use-effect,Reactjs,React Hooks,Use Effect,单击“单击我”按钮后,我的计数值正在更新。现在,在卸载组件之前,我必须做一些事情,如果count大于0 但我注意到在调试器期间,计数值始终为0。当我期望计数应该大于0时,如果我多次单击 请帮助我,如何在组件卸载期间获取更新值。谢谢 import React, { useState, useEffect } from 'react'; function Example() { const [count, setCount] = useState(0); useEffect(()
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
useEffect(() => {
//ComponentDidMount
return(()=>{
//componentWillUnmount
alert(count); //count 0
if(count){
//Do Something
}
})
},[]);
useEffect(() => {
document.title = `You clicked ${count} times`;
});
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
在useEffect中设置清理函数时,您正在对count的原始值形成闭包。这意味着即使count的值在状态中更新,count的值在cleanup函数中仍保持为0 为了避免这种情况,您需要为useEffect的依赖项数组添加count。这样,当count在状态中更新并且组件重新渲染时,cleanup函数也会使用count的最新值进行更新
在useEffect中设置清理函数时,您正在对count的原始值形成闭包。这意味着即使count的值在状态中更新,count的值在cleanup函数中仍保持为0 为了避免这种情况,您需要为useEffect的依赖项数组添加count。这样,当count在状态中更新并且组件重新渲染时,cleanup函数也会使用count的最新值进行更新
useEffect(() => {
return (()=> {
alert(count); // this will now be latest value of count on unmount
if(count) {
// Do Something
}
})
}, [count]); // add is now a dependency of useEffect