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

131
Vistas
actualización de estado desde una devolución de llamada

La siguiente función miembro rellena de forma asincrónica un objeto de folder_structure con datos falsos:

 fake(folders_: number, progress_callback_: (progress_: number) => void = (progress_: number) => null): Promise<boolean> { return new Promise((resolve, reject) => { for (let i_ = 0; i_ < folders_; i_++) { progress_callback_(i_ / folders_ * 100.); this.add(this.id(), faker.address.city() + i_, random_choice(this.folder_structure_id())); } progress_callback_(folders_ / folders_ * 100.); resolve(true); }) }

Utiliza una devolución de llamada para actualizar el progreso dentro del ciclo for que luego se usa para actualizar el estado (una barra de progreso) desde dentro de una función useEffect() con una matriz de dependencia vacía.

 let [progress_state_, set_progress_state_] = useState<number>(0); let [fake_done_, set_fake_done_] = useState<boolean>(false); useEffect(() => { if (fake_) folder_structure_.fake(fake_, (progress_) => { set_progress_state_(progress_) }).then(value => set_fake_done_(value)); }, []) if (!fake_ || fake_done_) etc etc

Sin embargo, el estado no se actualiza (el registro del progreso en la consola parece funcionar bien). ¿Alguna idea sobre si es posible actualizar un estado desde useEffect ?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

La razón por la que su useEffect no funciona es que no se llama al cambio de estado de estado de progress_state_ .

En vez de

 useEffect(() => { ... }, [])

Prueba esto en su lugar

 useEffect(() => { ... }, [progress_])

Agregar progress_ a la matriz de dependencias significa que se llamará a useEffect cada vez que cambie progress_ . Si lo deja como una matriz de dependencia vacía, useEffect solo se llama al principio cuando el código se monta en el DOM.

Aquí hay una buena explicación sobre las matrices de dependencia: https://devtrium.com/posts/dependency-arrays

about 4 years ago · Juan Pablo Isaza Denunciar

0

Abordando su pregunta final: Sí, es posible actualizar el estado desde useEffect .

Para comprender la raíz de su problema principal, me gustaría ver cómo está realizando su registro. ¿Está iniciando sesión desde fake() o desde su función render() ?

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