+-
在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

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