reactjs - NextJS useEffect locaStorage 问题
问题描述
我正在尝试从 localstorage 获取字符串并在某些条件下检查并根据 localstorage 的值重定向页面
但问题是,即使在它重定向到原始页面之前,我也可以看到该页面几秒钟
基本上是它的认证之类的东西
这是代码
import React from "react";
import AdminDashboard from "../components/AdminDashboard";
import Router from "next/router";
import SignIn from "../pages/index";
import useRouter from "next/router";
import fetch from "isomorphic-unfetch";
var userType;
export default function Test({ token }) {
const [userType, setuserType] = React.useState(false);
React.useLayoutEffect(() => {
if (userType !== true) {
const lt = localStorage.getItem("userType");
if (lt !== true) Router.push("/");
}
return () => {};
}, []);
{
console.log(token);
}
return (
<div>
<AdminDashboard>Admin Page </AdminDashboard>
</div>
);
}
解决方案
您可以仅在客户端中呈现页面以避免页面闪烁。
另一方面,您可以只使用 useEffect。
const Page = null;
React.useEffect(() => {
if (userType !== true) {
const lt = localStorage.getItem("userType");
if (lt !== true) Router.push("/");
} else {
Page = (
<div>
<AdminDashboard>Admin Page </AdminDashboard>
</div>
)
}
}, [])
return Page
推荐阅读
- operating-system - 是否有可能编写一个程序来让计算机着火?
- sql - SQL 数据库查询按 ChildrenID 和 subChildrenID 分组结果
- xml - Xpath - 选择和读取所有子节点的值,无论名称如何
- python - 使用 os.rename 时出现 FileNotFoundError,但在调用打印函数时没有
- c# - 想要遍历容器中的所有 blob,但跳过任何云 blob 目录
- html - 在屏幕右侧放置一个包含 iframe 的 div?
- python-3.x - PySpark 汇总数据框
- css - Gulp 监视所有 .scss 文件并作为兄弟姐妹编译为 css?
- javafx - 如何将自定义组件添加到 JavaFX TableView 列?
- python - 我在 python 中遇到字符串和 for 循环的问题