如何组合多个 getServerSideProps 包装器?
Posted
技术标签:
【中文标题】如何组合多个 getServerSideProps 包装器?【英文标题】:How to combine multiple getServerSideProps wrappers? 【发布时间】:2021-05-20 20:35:01 【问题描述】:我在 NextJs 应用程序中使用了两个库:next-firebase-auth
和 next-redux-wrapper
。它们都要求我用它们各自的功能包装getServerSideProps
。
对于next-firebase-auth
export const getServerSideProps = withAuthUsers-s-r()(async ( AuthUser ) =>
// Some code
)
对于next-redux-wrapper
export const getServerSideProps = wrapper.getServerSideProps(
(store) =>
// Some code
);
两者都单独工作,但我无法让两者同时工作。 NextJs 只允许getServerSideProps
被声明一次。是否有可能以某种方式组合多个包装器?
【问题讨论】:
【参考方案1】:您可以一个接一个地链接包装器。内部函数将包含他们两个传递的额外道具。
export const getServerSideProps = withAuthUsers-s-r()(wrapper.getServerSideProps(
( AuthUser, store, res, req ) =>
// `getServerSideProps` code here
))
从next-redux-wrapper
v7 开始,wrapper.getServerSideProps
签名已更改。
export const getServerSideProps = withAuthUsers-s-r()(wrapper.getServerSideProps(
(store) => async ( AuthUser, res, req ) =>
// `getServerSideProps` code here
))
【讨论】:
以上是关于如何组合多个 getServerSideProps 包装器?的主要内容,如果未能解决你的问题,请参考以下文章
NextJS + Apollo:如何在 getServerSideProps 内的 apolloClient.query 上获取多个查询?
NextJS getServerSideProps() 具有多个获取请求
将单个 getServerSideProps 方法导入 Nextjs 中的多个页面
使用带有 NextJS 的 getServerSideProps 生成多个页面