将单个 getServerSideProps 方法导入 Nextjs 中的多个页面
Posted
技术标签:
【中文标题】将单个 getServerSideProps 方法导入 Nextjs 中的多个页面【英文标题】:import a single getServerSideProps method to multiple pages in Nextjs 【发布时间】:2022-01-10 23:28:43 【问题描述】:我正在尝试将 getServerSideProps 方法从该页面导入到另一个页面,并在多个页面中使用它。我该怎么做?
这是我的代码:
import DashboardLayout from "@app/layout/DashboardLayout";
import Overview from "@containers/dashboard/Overview";
import parsedCookie from "@infrastructure/utils/functions";
const OverviewPage = () =>
return (
<DashboardLayout>
<Overview />
</DashboardLayout>
);
;
export default OverviewPage;
export const getServerSideProps = async (context) =>
const token = parsedCookie(context.req);
const accessToken, refreshToken = token;
if (!accessToken || !refreshToken)
return
redirect:
destination: "/",
permanent: false,
,
;
return
props: ,
;
;
【问题讨论】:
将此函数放在一个单独的文件中,并在需要的地方导入。 【参考方案1】:您不能导入getServerSideProps
,它们对于每个页面都是唯一的,但如果第一次加载的所有页面都应该获得相同的数据,您可以在您的_app.js
文件中添加getIntialProps
。
有关更多信息,您可以阅读
customizing _app.js files
【讨论】:
【参考方案2】:我找到了答案。下面是如何在另一个页面上使用页面数据获取方法
import DashboardLayout from "@app/layout/DashboardLayout";
import MyCourses from "@containers/dashboard/MyCourses";
import getServerSideProps from "../index";
const MyCoursesPage = () =>
return (
<DashboardLayout>
<MyCourses />
</DashboardLayout>
);
;
export default MyCoursesPage;
export getServerSideProps ;
【讨论】:
这是不正确的。此道具不适用于任何组件。这是专为页面设计的 @abhikumar22 你说得对,getServerSideProps
不能在页面组件之外使用,但是 OP 没有提到“任何组件”,他具体说 “使用页面数据在另一个页面"上获取方法(重点是我的)。以上是关于将单个 getServerSideProps 方法导入 Nextjs 中的多个页面的主要内容,如果未能解决你的问题,请参考以下文章
将 getServerSideProps 函数放在帮助程序中
从 getServerSideProps getState() 或 useSelector() 中获取状态值的正确方法?
如何将道具从组件传递到 NextJS 中的 getServerSideProps()?
为啥 getServerSideProps 没有将正确的值传递给组件 props?