Reactjs useEffect()链函数调用未获取更新的redux状态
我有这个密码Reactjs useEffect()链函数调用未获取更新的redux状态,reactjs,redux,react-redux,react-hooks,use-effect,Reactjs,Redux,React Redux,React Hooks,Use Effect,我有这个密码 useEffect(() => { console.log('SHOWING LAYOUT'); return () => { if (!auth.isChangePasswordSuccess) { console.log('SHOWING LAYOUT 2', auth.isChangePasswordSuccess); dispatch(updateAuth('status', use
useEffect(() => {
console.log('SHOWING LAYOUT');
return () => {
if (!auth.isChangePasswordSuccess) {
console.log('SHOWING LAYOUT 2', auth.isChangePasswordSuccess);
dispatch(updateAuth('status', userStatus.LOGGED_IN));
}
}
}, [auth.isChangePasswordSuccess]);
在第一次加载屏幕时,“显示布局”显示在我的控制台上,auth.isChangePasswordSuccess的值为false。但是,当我将值auth.isChangePasswordSuccess更改为true时,会触发useffect(),在控制台中显示“显示布局2”,但auth.isChangePasswordSuccess的值仍然是false
知道为什么在链函数调用中redux状态的值不受影响吗?
我与另一个确认了我的另一个useEffect(),该值已更改为true我认为您不能返回函数,您可以使用稍微不同的方法
useEffect(() => {
console.log('SHOWING LAYOUT');
if (auth.isChangePasswordSuccess) {
console.log('SHOWING LAYOUT 2', auth.isChangePasswordSuccess);
dispatch(updateAuth('status', userStatus.LOGGED_IN));
}
}, [auth.isChangePasswordSuccess]);
让我知道这是否有效
我认为,
useffect
返回的函数是在每次“重新运行”之前运行的,因此这意味着控制台上显示的“显示布局2”是在第一次运行useffect
时创建的函数,更改变量之前。从效果返回的函数是,将显示auth.isChangePasswordSuccess
的上一个值。这是因为当auth.isChangePasswordSuccess
更改时,它将首先运行在其闭包中具有上一个值的清理,然后运行在其闭包中具有当前值的效果。以下是一个例子:
const{useffect}=React;
常量组件=({auth})=>{
useffect(()=>{
console.log(
“当前有效值函数:”,
auth.isChangePasswordSuccess
);
//返回清除函数
return()=>{
console.log(
'auth.isChangePasswordSuccess已更改,正在运行清理'
);
console.log(
'上一个值(创建清理时的值)',
auth.isChangePasswordSuccess
);
};
},[auth.isChangePasswordSuccess]);
返回字符串(auth.isChangePasswordSuccess);
};
常量应用=()=>{
const[auth,setAuth]=React.useState({
isChangePasswordSuccess:true,
});
返回(
setAuth((auth)=>({
…嗯,
isChangePasswordSuccess:!auth.isChangePasswordSuccess,
}))
}
>
切换isChangePasswordSuccess
);
};
ReactDOM.render(,document.getElementById('root'))代码>
您可以发布useSelector部分吗?