Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

75
Views
Next.js, pase getServerSideProps y accesorios secundarios en el componente de la página

En mi próximo proyecto

Tengo la siguiente estructura dentro de la carpeta de páginas.

 components (folder) Layout.js Navbar.js Footer.js _app.js shoes.js index.js

tengo en mi _app.js

 function MyApp({ Component, pageProps }) { return ( <Layout> <Component {...pageProps} /> </Layout> ) }

El diseño contiene algunas partes comunes de la aplicación, como Navbar.js y Footer.js Diseño interno que tengo

 export async function getServerSideProps(){ const req = await fetch(`https://jsonplaceholder.typicode.com/posts?_limit=3`) const posts = await req.json(); return { props:{posts} } } export default function Layout({ ... props }){ return( <ThemeProvider theme={theme}> <Head> </Head> <Navbar /> <div> {props.posts} </div> {props.children} <Footer/> </ThemeProvider> ) }

El diseño contiene la parte superior e inferior de la aplicación y luego sus elementos secundarios van en medio, en este caso, el índice y las páginas de zapatos.

Quiero obtener algunos datos en Layout usando getServerSideProps que podré pasar libremente

Tal como está ahora, dentro de Layout, solo puedo ver niños como accesorios. no veo las publicaciones Probé diferentes enfoques a continuación para insertar publicaciones en los accesorios del componente Diseño, nada funcionó.

 export default function Layout({ children, posts }){ export default function Layout({...{ children, posts }}){

¿Cómo puedo resolver esto? Por favor ayuda. Gracias

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Solo puede usar getServerSideProps en los componentes de página que tiene en la carpeta de páginas. NextJS verá si hay una función getServerSideProps y, en caso afirmativo, la invocará y completará los datos. Pero esto solo sucede si NextJS tiene el control del componente de la página. Entonces, incluso si lo almacena en el directorio de pages , pero importa el componente en algún otro archivo, básicamente le está quitando el control a NextJS e instanciando el componente usted mismo.

Referencia

about 4 years ago · Juan Pablo Isaza Report

0

Puede usar el componente Diseño como un envoltorio solo en sus páginas, luego puede pasarle los accesorios.

Vea cómo lo logramos aquí . Es posible que requiera algunos cambios en la estructura de su componente. Si edita su pregunta con la estructura de su componente, puedo ayudarlo.

por lo que debe tomar su componente Layout y repetirlo en cada componente en la carpeta de páginas.

entonces en _app , tendrás

 function MyApp({ Component, pageProps }) { return ( <Component {...pageProps} /> ) }

moverá sus accesorios estáticos desde donde están ahora a todos los componentes debajo de las pages Su componente de diseño se convertirá en

 export default function Layout({ ... props }){ return( <ThemeProvider theme={theme}> <Head> </Head> <Navbar /> <div> {props.posts} </div> {props.children} <Footer/> </ThemeProvider> ) }

Ahora, suponiendo que tiene una página index.js en la carpeta de páginas, se volverá así. Tendrás que hacer esto para todas las páginas.

 function Index({posts,..props}) { return ( <Layout posts={posts}> // your current home content will be here </Layout> ) } export async function getServerSideProps(){ const req = await fetch(`https://jsonplaceholder.typicode.com/posts?_limit=3`) const posts = await req.json(); return { props:{posts} } }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!