在Next JS中,私人路由无法正常运行

时间:2020-06-25 07:30:28

标签: reactjs routes next.js

我正在使用React和Next.js开发一个项目。身份验证路由无法正常工作。我当时在想我的私有路由JS文件中的getInitialProps函数没有被触发。

谁能看到哪里出了问题?预先感谢!

import redirect from "./redirect";
import cookie from "cookie";
function parseCookies(req, options = {}) {
  return cookie.parse(
    req ? req.headers.cookie || "" : document.cookie,
    options
  );
}
export default ({ WrappedComponent, checkKeys, operation }) => {
  return class PrivateRoute extends React.Component {
    static async getInitialProps(ctx) {
      const { req, res } = ctx;
      console.log("router", ctx);
      console.log(parseCookies(req));
      if (
        (!operation || operation === "and") &&
        !checkKeys.every((key) => {
          return parseCookies(req)[key] ? true : false;
        })
      ) {
        redirect(res);
        return;
      } else if (
        operation === "or" &&
        !checkKeys.some((key) => {
          return parseCookies(req)[key] ? true : false;
        })
      ) {
        redirect(res);
      }
      return {};
    }
    render() {
      return <WrappedComponent {...this.props} />;
    }
  };
};

pages文件夹下,我创建了一个onboarding.js文件,如下所示:

import Onboarding from '../../src/components/Vendor/Onboarding';
import PrivateRoute from '../../src/helper/PrivateRoute';
import { storeKeys } from '../../src/store';

export default PrivateRoute({
  WrappedComponent: Onboarding,
  checkKeys: [storeKeys.token],
});

0 个答案:

没有答案