NextJS useEffect locaStorage问题

时间:2020-04-28 14:42:04

标签: reactjs next.js

我正在尝试从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>
  );
}

1 个答案:

答案 0 :(得分:0)

您只能在客户端中呈现页面以避免页面闪烁。

另一方面,您可以只使用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