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

194
Vistas
When I open the modal, the api call running always

I'd like that if I click onto a link and the modal is open the api call runs one time. Unfortunately it's running always, till the open state is true.


    const [open, setOpen] = useState(false);
    const [content, setContent] = useState();

    const handleOpen = () => setOpen(true);
    const handleClose = () => setOpen(false);


    const fetchData = async (movieName) => {
    console.log("Fetching");
    const { data } = await axios.get(
      `https://en.wikipedia.org/w/api.php?action=query&origin=*&list=search&utf8=1&formatversion=latest&srsearch="${movieName}" articletopic:films`
    );

    setContent(data);
    console.log(data);
  };

    if (open) {
    fetchData();
  }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

You should use useEffect hook to call the API only once when the component is mounted.

Replace below

 if (open) {
    fetchData();
 }

with

import { useEffect } from "react";
...
...
  useEffect(() => {
    fetchData();
  }, []);
about 4 years ago · Juan Pablo Isaza Denunciar

0

As you are directly calling fetchData when open is true. When api call is successful it setContent. Which triggers component to re render. It agains call the api and sets state re-render and so on. Call api inside useEffect.

    useEffect(() => {
        if (open) {
            fetchData();
        }
    }, [open]);
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