如何组合多个 getServerSideProps 包装器?

Posted

技术标签:

【中文标题】如何组合多个 getServerSideProps 包装器?【英文标题】:How to combine multiple getServerSideProps wrappers? 【发布时间】:2021-05-20 20:35:01 【问题描述】:

我在 NextJs 应用程序中使用了两个库:next-firebase-authnext-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 生成多个页面

如何在 getServerSideProps 之外获取 cookie?

如何将道具从组件传递到 NextJS 中的 getServerSideProps()?