React State 根本不保存

问题描述 投票:0回答:1

在auth和login函数中,返回的数据是正确的,但是当我将其保存到state时,它就消失了

export const useAuth = () => {
    const [user, setUser] = useState(null);
    return {
        user,
        async login({mail, password, stayLoggedIn}) {
            const res = await logIn({mail, password, stayLoggedIn})
            console.log(res.data)
            if(res.status===200) setUser(res.data)
            return res;
        },
        async auth() {
            try {
                const res = await autoLogin();
                console.log(res.data) // correct data
                setUser(res.data)
                console.log(user) // null
                return res;
            } catch (e) {
                console.log(e)
            }
        },
        async logout() {
            setUser(false)
        }
    }
}

预期结果是将用户数据保存到状态,然后将其作为上下文传递给应用程序的其余部分。

javascript reactjs state
1个回答
0
投票

React 中的 setState 是异步的,如果你想使用更新后的值,你需要使用:

useEffect(() => {
   console.log(user);
}, [user]));
© www.soinside.com 2019 - 2024. All rights reserved.