NextJS - 如何组合两个 getServerSideProps 包装器?

Posted

技术标签:

【中文标题】NextJS - 如何组合两个 getServerSideProps 包装器?【英文标题】:NextJS - How to combine two getServerSideProps wrappers? 【发布时间】:2021-10-19 04:32:25 【问题描述】:

我在 nextjs 客户端中使用 next-iron-sessionnext-redux-wrapper。 它们都要求我用它们各自的函数包装 getServerSideProps。 有人知道,我如何链接包装器?

下一次熨斗(个人)

export const getServerSideProps = 
  withIronSession(
  async ( req, res ) => 
    const user = req.session.get("user");

    if (!user) 
      res.statusCode = 404;
      res.end();
      return  props:  ;
    

    return 
      props:  user 
    ;
  ,
  
    cookieName: "MYSITECOOKIE",
    cookieOptions: 
      secure: process.env.NODE_ENV === "production" ? true : false
    ,
    password: process.env.APPLICATION_SECRET
  
);

next-redux-wrapper(个人)

export const getServerSideProps = wrapper.getServerSideProps((store) => async () => 
  const user = store.getState().user
  console.log('user', user)
)

组合(不工作)

TypeError:无法读取未定义的属性“ttl”

    export const getServerSideProps = withIronSession(
      wrapper.getServerSideProps(
        (store) =>
          async ( req, res ) => 
            const user = req.session.get('user')
            console.log(user)
            return 
              props:  user: 'hi' ,
            
          ,
        
          cookieName: 'MYSITECOOKIE',
          cookieOptions: 
            secure: process.env.NODE_ENV === 'production' ? true : false,
          ,
 password: process.env.APPLICATION_SECRET
        ,
      ),
    )

【问题讨论】:

【参考方案1】:

我不知道为什么它突然起作用了。那是我的第一个解决方案,现在已经不起作用了。但是对于较新的,请...

export const getServerSideProps = wrapper.getServerSideProps((store) =>
  withIronSession(
    async ( req, res ) => 
      const user = await req.session.get('user')
      console.log('uer', user)
      return 
        props:  user: 'hi' ,
      
    ,
    
      cookieName: 'MYSITECOOKIE',
      cookieOptions: 
        secure: process.env.NODE_ENV === 'production' ? true : false,
      ,
      password: process.env.APPLICATION_SECRET,
    ,
  ),
)

【讨论】:

以上是关于NextJS - 如何组合两个 getServerSideProps 包装器?的主要内容,如果未能解决你的问题,请参考以下文章

NextJS、Apollo、WPGraphQL & 组合或检索超过 100 条记录

Firebase + Nextjs - 用户会话共享

使用 recompose setStatic 并将其连接到 redux (nextjs)

如何在 react 和 next js 中使用 Styled 组件创建全局样式,使用 css 文件和 styled 组件的组合是不是更好?

如何将实时数据输入 NextJS?

在 NextJs 中如何使用更改事件更改 getServerSideProps