• Jobs
  • About Us
  • Jobs
    • Home
    • Jobs
    • Courses and challenges
  • Businesses
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

280
Views
¿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!

over 3 years ago · Juan Pablo Isaza
2 answers
Answer question

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 } }
over 3 years ago · Juan Pablo Isaza Report

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.

over 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Show me some job opportunities
There's an error!