【发布时间】:2021-08-10 04:59:59
【问题描述】:
我有很多页面需要使用 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>
但它没有运行。我想知道是否有更好的方法。
【问题讨论】:
-
这是否有助于回答您的问题:Creating a HOC (higher order component) for cookies in nextJS?您可以创建一个包装函数,您可以在所有页面的
getServerSideProps函数上调用该函数。 -
嘿,@juliomalves 让我试试这个。
标签: reactjs typescript next.js