在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)
}
}
}
预期结果是将用户数据保存到状态,然后将其作为上下文传递给应用程序的其余部分。
React 中的 setState 是异步的,如果你想使用更新后的值,你需要使用:
useEffect(() => {
console.log(user);
}, [user]));