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

73
Views
Tenga múltiples solicitudes GET y establezca el estado de la llamada una vez que se hayan completado

Estoy tratando de generar una lista de películas favoritas basada en la lista de usuarios que iniciaron sesión. El flujo es el siguiente:

  1. Tengo ID de películas favoritas en firebase DTB para cada usuario
  2. El usuario visita la página de "favoritos" y se actualiza la colección de películas favoritas
  3. Luego, se llama a la llamada API para movieDB para que cada película represente la lista de películas.

Desafortunadamente, pude actualizar la matriz de objetos solo a través de push, lo que resultó en llamar a setContent(items) para cada elemento, lo que significa que la variable de content existe incluso con la primera iteración, dejando la opción de representar el div de "tendencia" como valor es verdad no mostrar el contenido completo.

¿Cómo puedo refactorizar el useEffect ? ¿Cambiar las condiciones de representación para "Tendencia" para asegurarse de que todos los valores en la variable de content hayan terminado de actualizarse a través de la API?

 const Favorite = () => { const { user } = useAuthContext(); const { documents: movies } = useCollection("favMovies", ["uid", "==", user.uid]); // only fetch movies for loged user const [page, setPage] = useState(1); const [content, setContent] = useState([]); const [numOfPages, setNumOfPages] = useState(); useEffect(() => { const items = []; movies && movies.forEach(async (movie) => { try { const response = await axios.get( `https://api.themoviedb.org/3/${movie.mediaType}/${movie.id}?api_key=${process.env.REACT_APP_API_KEY}&language=en-US` ); items.push(response.data); setContent(items); } catch (error) { console.error(error); } }); }, [movies]); return ( <div> <span className="pageTitle">Trending</span> <div className="trending"> {content && content.map((con) => ( <SingleContent key={con.id} id={con.id} poster={con.poster_path} title={con.title || con.name} date={con.first_air_date || con.release_date} mediaType={con.media_type} voteAverage={con.vote_average} /> ))} </div> <CustomPagination setPage={setPage} /> </div> ); }; export default Favorite;
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puede superar su problema usando Promise.all() . Para eso, cambie su código useEffect a:

 useEffect(() => { const fectchMovies = async () => { if (!movies) return; try { const promises = movies.map((movie) => axios.get( `https://api.themoviedb.org/3/${movie.mediaType}/${movie.id}?api_key=${process.env.REACT_APP_API_KEY}&language=en-US` ) ); const content = await Promise.all(promises); setContent(content.map(c => c.data)); } catch (error) { console.error(error); } }; fectchMovies(); }, [movies]);
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!