Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Duda] El tema del código para mostrar los posts

No comprendo bien el código de ListPost (miren los comentarios). Necesito una explicación paso a paso del código.

import { useState, useEffect } from "react"
import "../assets/css/componentes/card.css"
import { buscar } from "../api/api"
import { Link } from "react-router-dom"

const ListPosts = ({ url }) => {

    const [posts, setPosts] = useState([]) //aquí el usestate no lo comprendo bien, se guarda en un array post, setPost

    useEffect(() => {
        buscar(url, setPosts)
    }, [url]) // El useEffect qué hace exactamente? veo que retorna la llamada de la funcion buscar con parametros url y setpost, pero al final veo que pasa una array [url]
    
    return (
        <section className="posts container">
            {
               //En este método map supongo que recorre cada post del json y aquí se le hace la estructura visual, con la destructuracion de cada propiedad del json, y en el link en el prop se le llama /posts/id, es así?
                posts.map(post => {
                    const { id, title, metadescription, categoria } = post;
                    return <Link to={`/posts/${id}`} className={`post__card post-card--${categoria}`} key={id}>
                        <article >
                            <h3 className="post-card__title">
                                {title}
                            </h3>
                            <p className="post-card__meta">{metadescription}</p>
                        </article>
                    </Link>
                })
            }
        </section>
    )
}

export default ListPosts

Y en el Home lo único que hace es importa el componente ListPosts para agregarlo y pasa la prop url con /posts, supongo que hace referencia al post del json

<ListPosts url={'/posts'}/>

Y una duda extra, cuál es la diferencia de usestate y useeffect?

2 respuestas
solución!

¡Hola Edwin!

¡Entiendo que estés confundido con el código de ListPosts! Permíteme explicarte paso a paso lo que está sucediendo:

En el código de ListPosts, se utiliza el hook useState para crear una variable de estado llamada "posts" que inicialmente es un array vacío. Este hook permite almacenar y actualizar valores en componentes de función en React. Luego, se utiliza el hook useEffect para realizar una llamada a la función "buscar" cada vez que la URL cambia. Este hook se ejecuta después de que el componente se haya renderizado y también cuando ocurren cambios en las dependencias especificadas en el array [url]. En este caso, la función "buscar" se encarga de obtener los datos de la API y actualizar el estado de "posts" utilizando la función "setPosts".

Dentro del componente, se utiliza el método map para recorrer cada objeto del array "posts" y generar una estructura visual para cada uno de ellos. En el prop "to" del componente Link, se utiliza la sintaxis de template literals para generar una URL dinámica que incluye el id de cada post. Por ejemplo, si el id de un post es 1, la URL generada sería "/posts/1". Esto permite que al hacer clic en el enlace, se redirija a una página de detalle del post correspondiente.

En cuanto a tu pregunta adicional, la diferencia entre useState y useEffect es la siguiente:

  • useState es un hook que se utiliza para declarar y actualizar variables de estado en componentes de función en React. Permite almacenar valores y actualizarlos de manera reactiva, es decir, cuando el valor de una variable de estado cambia, React se encarga de volver a renderizar el componente para reflejar ese cambio.

  • useEffect es un hook que se utiliza para realizar efectos secundarios en componentes de función en React. Puede ser utilizado para realizar llamadas a APIs, suscribirse a eventos, manipular el DOM, entre otras cosas. Se ejecuta después de que el componente se haya renderizado y también cuando ocurren cambios en las dependencias especificadas en el array de dependencias. Esto permite controlar cuándo se ejecuta el efecto y evitar ejecuciones innecesarias.

Espero que esta explicación te haya ayudado a entender mejor el código de ListPosts y la diferencia entre useState y useEffect. Si tienes alguna otra pregunta, no dudes en preguntar. ¡Estoy aquí para ayudarte!

¡Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)

Hola Rafaela, Excelente tu respuesta Mil Gracias