Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

319
Visualizações
redux-toolkit nextjs server-side rehydration

I am trying to:

  1. get server-sided headers (req.headers.x-my-custom-header)
  2. getInitialProps (_document) dispatch x-my-custom-header to store (server-sided) <- PROBLEM
  3. rehydrate x-my-custom-header to client

_document.tsx:

MyDocument.getInitialProps = async (context: DocumentContext) => {
  const initialProps = await Document.getInitialProps(context);
  const isServer = context.req;
  if (isServer) {
    // const site = context.req?.headers['x-site']
    store.dispatch(setSite('foo')); // <- setting state to 'foo'
  }
  const initialState = store.getState();
  console.log('initialState', initialState); // <- has 'bar' in it
  return {
    ...initialProps,
    initialState,
  };
};

my slice

import { createSlice, Slice } from '@reduxjs/toolkit';

export const name = 'settings';

export enum Sites {
  foo = 'foo',
  bar = 'bar',
}

export type SettingsState = {
  site: Sites;
};

const initialState: SettingsState = {
  site: Sites.bar,
};

const slice: Slice<SettingsState> = createSlice({
  name,
  initialState,
  reducers: {
    setSite(state, action: { type: string; payload: Sites }) {
      state.settings.site = action.payload;
    },
  },
});

export const { setSite } = slice.actions;

export default slice.reducer;

Any ideas what could be the problem here?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda