Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

169
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda