#javascript #reactjs #next.js #next-redux-wrapper
Вопрос:
Я использую next-iron-session
и next-redux-wrapper
в своем клиенте nextjs. Оба они требуют, чтобы я обернул 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
}
);
далее-переделка-обертка (индивидуальная)
export const getServerSideProps = wrapper.getServerSideProps((store) => async () => {
const user = store.getState().user
console.log('user', user)
})
Комбинация (не работает)
Ошибка типа: Не удается прочитать свойство «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,
},
),
)