Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

138
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda