将 getServerSideProps 函数放在帮助程序中

时间:2021-05-20 22:46:01

标签: next.js getserversideprops

这里。

我想使用 firebase 管理方法保护许多页面:

const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
  try {
    const cookies = nookies.get(ctx);
    const token = await firebaseAdmin.auth().verifyIdToken(cookies.token);
    const { uid, email } = token;

    return {
      props: {
        email,
        uid,
      },
    };
  } catch (err) {
    return {
      redirect: {
        permanent: false,
        destination: "/",
      },
      props: {} as unknown as never,
    };
  }
};

const ExpertPage = (
  props: InferGetServerSidePropsType<typeof getServerSideProps>,
) => {
  return (
    <Layout type={ILayoutType.EXPERT}>
      <ProtectedPage1 props={props} />
    </Layout>
  );
};

export default ExpertPage;

如您所见,应该在所有这些页面上调用函数 getServerSideProps,这是我想要避免的。

我试图将它移动到一个助手中,以便在此处将其称为类型InferGetServerSidePropsType<typeof getServerSideProps>

但它没有运行。我想知道是否有更好的方法

0 个答案:

没有答案