我是第一次接触React Hooks和使用react 16.13.1。
我将实现Auth组件,它可以处理登录。
但是,即使使用response Object调用setCurrentUser,它似乎也没有正确更新状态currentUser。
这段代码有什么问题?
import React, { useState, useEffect } from "react";
import { Route, Redirect } from "react-router-dom";
import { checkLoggedIn } from "utils/Api";
export const Auth = (props) => {
const [currentUser, setCurrentUser] = useState(null);
const [isLoading, setIsLoading] = useState(false);
console.log(currentUser);
useEffect(() => {
const f = async () => {
setIsLoading(true);
console.log(isLoading);
const res = await checkLoggedIn();
if (!!res) { // ==> true
setCurrentUser(res);
console.log(currentUser); // ==> null!
}
setIsLoading(false);
};
f();
});
if (isLoading) {
return <div>loading</div>;
}
console.log(currentUser); // ==> null!
return !!currentUser ? (
<Route children={props.children} />
) : (
<Redirect to={"/login"} />
);
};发布于 2020-10-04 15:22:48
感谢@germanescobar和@Vadim教会了我很多东西!
现在我注意到useState的争论和这个问题有关。
改变
const [currentUser, setCurrentUser] = useState(null);转到
const [currentUser, setCurrentUser] = useState({});似乎已经解决了不更新的问题(我不知道原因)。
https://stackoverflow.com/questions/64191896
复制相似问题