【发布时间】:2021-01-19 07:57:57
【问题描述】:
我是 React Hooks 的新手并使用 react 16.13.1。
我将实现Auth 组件,它可以处理登录。
但它似乎没有正确更新状态currentUser,即使setCurrentUser 是用响应对象调用的。
这段代码有什么问题?
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"} />
);
};
【问题讨论】:
标签: reactjs react-hooks