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

178
Visualizações
El componente de diseño por página de Next.js no obtiene valor de la configuración global swr de Vercel

El useSWR de swr funciona en todas partes si ingreso explícitamente el buscador.

 const { data } = useSWR("http://...", fetcher);

Sin embargo, si usé la configuración global de swr como se muestra a continuación, useSWR solo funciona en la First página pero no en el componente HeaderLayout . Realicé una depuración y descubrí que en HeaderLayout no recibe el valor de la configuración global swr ( SWRConfig en _app.tsx ) a pesar de que está envuelto dentro.

Seguí este documentohttps://nextjs.org/docs/basic-features/layouts#per-page-layouts para la implementación del diseño de página

 // _app.tsx type NextPageWithLayout = NextPage & { getLayout?: (page: React.ReactElement) => React.ReactNode; }; type AppPropsWithLayout = AppProps & { Component: NextPageWithLayout; }; function MyApp({ Component, pageProps }: AppPropsWithLayout) { const getLayout = Component.getLayout ?? ((page) => page); return ( <SWRConfig value={{ fetcher: (resource, init) => fetch(resource, init).then((res) => res.json()), }} > {getLayout(<Component {...pageProps} />)} </SWRConfig> ); }
 // pages/first const First = () => { const [searchInput, setSearchInput] = useState(""); const router = useRouter(); const { data } = useSWR("http://..."); return ( <div>...Content...</div> ); }; First.getLayout = HeaderLayout;
 // layout/HeaderLayout const HeaderLayout = (page: React.ReactElement) => { const router = useRouter(); const { project: projectId, application: applicationId } = router.query; const { data } = useSWR(`http://...`); return ( <> <Header /> {page} </> ); };

Enlaces Útiles:

https://nextjs.org/docs/basic-features/layouts#per-page-layouts

https://swr.vercel.app/docs/configuración-global

El proveedor de contexto Next.js envuelve el componente de la aplicación con un componente de diseño específico de la página que proporciona datos indefinidos

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Su propiedad First.getLayout debe ser una función que acepte una page y devuelva esa página envuelta por el componente HeaderLayout .

 First.getLayout = function getLayout(page) { return ( <HeaderLayout>{page}</HeaderLayout> ) }

El HeaderLayout es un componente de React, su primer argumento contiene los props que se le pasan. Debe modificar su firma ligeramente para que coincida con esto.

 const HeaderLayout = ({ children }) => { const router = useRouter(); const { project: projectId, application: applicationId } = router.query; const { data } = useSWR(`http://...`); return ( <> <Header /> {children} </> ); };
about 4 years ago · Juan Pablo Isaza Relatório

0

Los diseños no funcionan si declara la página como const. Entonces, en lugar de const First = () => {...} , haga function First() {...}

about 4 years ago · Juan Pablo Isaza Relatório
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