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

323
Vistas
¿Por qué mi función no puede leer los parámetros pasados como se esperaba en React.js?

Utilizo un ID de publicación determinado para obtener todos los comentarios de la publicación, y espero usar una función saveComments para establecer la matriz de comentarios cargados en la identificación de la publicación.

Así que pasé dos parámetros, postId (debe ser un valor numérico) y loadedComments (debe ser una matriz de comentarios).

 useEffect( () => { fetchCommentsForPostId(postId) .then( loadedComments => { saveComments(postId, loadedComments); }); }, [] );

Sin embargo, cuando imprimo el valor para verificar si los parámetros pasados son correctos. Me doy cuenta de que el primero es bueno, es una identificación para la publicación. Pero el segundo, los comentarios, también es un valor de identificación. Creo que debería ser una matriz.

 function saveCommentsForPostId(postId, comments) { console.log(postId); // correct id number, eg. 1 console.log(comments); // incorrect, I think it should be an array of comments, but it is same as postId ... }

Y luego, probé de otra manera. Convierto mis dos parámetros como un objeto en una función de llamada.

 useEffect( () => { fetchCommentsForPostId(postId) .then( loadedComments => { saveComments({postId, loadedComments}); }); }, [] );

Ahora, el postId sigue siendo correcto. Sin embargo, los comentarios son el objeto completo que pasé. Es como {postId: 1, loadedComments: Array(5)}. ¿Cómo podría ser un objeto completo? Creo que debería ser una matriz pura.

 function saveCommentsForPostId(postId, comments) { console.log(postId); // correct id number, eg. 1 console.log(comments); // it is an object, eg. {postId: 1, loadedComments: Array(5)}. Why it is an object? I think it should be just an array. ... }

Después de probar muchas formas, la única forma de trabajo es hacer parámetros como un objeto y obtener la matriz que quiero usar:

 comments['loadedComments'] // this is the comment array I actually want

Estoy súper confundido al respecto. ¿Alguien podría explicar la lógica detrás de esto? ¡Gracias por adelantado!

*** actualizar

 export function fetchCommentsForPostId(postId) { return new Promise( (resolve) => { // This inserts a 2 second delay so we can easily see a spinner at work setTimeout( resolve, 2000); }) .then( () => fetch(`https://jsonplaceholder.typicode.com/posts/${postId}/comments`, { method: 'GET', }) ) .catch( () => Promise.reject('networkError') ) .then( response => { if(response.ok) { return response.json(); } return Promise.reject('serviceError'); }); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Ok, no estoy seguro de qué más estás haciendo, pero esto parece funcionar:

 function fetchCommentsForPostId(postId) { return new Promise((resolve) => { // This inserts a 2 second delay so we can easily see a spinner at work setTimeout(resolve, 2000); }).then(() => fetch(`https://jsonplaceholder.typicode.com/posts/${postId}/comments`, { method: "GET", }) ) .catch(() => Promise.reject("networkError")) .then((response) => { if (response.ok) { return response.json(); } return Promise.reject("serviceError"); }); } function saveCommentsForPostId(postId, comments) { console.log("postId:", postId); console.log("comments:", comments); } function doStuff(postId) { fetchCommentsForPostId(postId).then((loadedComments) => { saveCommentsForPostId(postId, loadedComments); }); } doStuff(1);

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