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部分吗?