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

329
Vistas
¿Por qué mi getServerSideProps vuelve como indefinido dentro de mi aplicación nextjs (estoy usando un componente de clase)

Bien, aquí está mi problema. Obtengo accesorios a través de getserversideprops, y he intentado varias correcciones, pero no puedo hacer que se muestre. Aquí está el código:

 import React, { Component } from 'react'; import rpstyle from '/styles/home/recentPosts.module.css' export default class RecentPosts extends Component { constructor() { super() this.state = { posts: this.props.posts } } static async getServerSideProps() { const res = await fetch('http://localhost:5000/search/recentposts') const json = await res.json() return { posts : json } } viewAllButton(){ if(this.props.viewAll != false){ return ( <div className={rpstyle.viewAll}> <a href='#'>View All Posts</a> </div> ) } else { return null } } render() { return ( <div className={rpstyle.container}> <hr /> <h1>Recent Posts</h1> {console.log(this.props.posts)} {this.viewAllButton()} </div> ) } }

Por alguna razón, no puedo encontrar una buena guía para los componentes basados en clases y este método. Si alguien tiene alguna idea sobre cómo hacer que esto no se muestre undefined , ¡hágamelo saber!

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

hola, también puede usar la misma api para las clases, si está usando una versión reciente de next, debe cambiar el objeto de retorno de getServerSideProps, debe tener una clave de accesorios

 import React, { Component } from 'react'; export default class RecentPosts extends Component { constructor(props) { super(props) this.state = { posts: props.data } } viewAllButton(){ if(this.props.viewAll != false){ return ( <div className={rpstyle.viewAll}> <a href='#'>View All Posts</a> </div> ) } else { return null } } render() { return ( <> <hr /> <h1>Recent Posts</h1> {console.log(this.state)} {/* {this.viewAllButton()} */} </> ) } } export async function getServerSideProps() { const res = await fetch('https://reqres.in/api/users') const json = await res.json() return { props : json } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

De acuerdo, tomé un poco de sus respuestas e investigué un poco más y encontré que esto funciona muy bien:

 import Recentstuff from '../components/home/recentposts/RecentPosts' export default function Home({data}) { return ( <div> <Recentstuff posts={data} /> </div> ) } export const getServerSideProps = async () => { const res = await fetch('http://localhost:5000/search/recentposts') const data = await res.json() return { props : {data} } }

Espero que esto ayude a cualquiera que haya tenido el mismo problema. Tienes que llamarlo dentro del archivo de la página, luego pasarlo como accesorio. ASEGÚRESE de desestructurarlo correctamente, porque tuve un poco de tiempo rastreando por qué mis llamadas a la API se mostraban en mi API pero no en mi cliente.

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