Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
183 views
in Technique[技术] by (71.8m points)

在useEffect中使用setState没有效果?

我做了一个简单的前端,为了省力,把登录成功的token保存到localStorage里,我在一个受保护的页面被访问之前在useEffect中判断是否存在token,如果存在就可以渲染,否则用react-router-domRedirect进行重定向。但是似乎出了一点问题。

export default function Dashboard()?{
    let [isLogin, setIslogin]?= React.useState(false);
    React.useEffect(() => {
        if (localStorage.getItem("token"))?{
            setIslogin(true);
            console.log("ok");
        }
        console.log(isLogin);
        return () => {}
    },?[isLogin]);
    
    if (!isLogin)?{
         return <Redirect
                 to={{
                    pathname: "/login",
                 }}
                /> 
    } else {
        return (
           <h1>这是一个受保护的页面</h1>
        );
    }
}

控制台的打印是

ok
false

请问哪里出了问题,或者有没有更好地解决方案?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

看上去应该是没问题,如果有token的话
应该是会打印

ok
false
ok
true

具体是出了什么问题 ?

另外这种情况完全没必要用hook

直接const isLogin = localStorge.getItem('token')就行了


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...