reactjs / reactjs/react.dev

[Suggestion]: Section "Queueing a Series of State Updates": await in event handler cause immediate rerender

Abierto
#6,931 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

type: documentation
Lenguaje dominante
JavaScript
Estrellas
11.8k
Forks
7.9k
Merge medio
1 d 11 h
PR fusionados (30 d)
11

Descripción

Summary

The documentation says here: "React waits until all code in the event handlers has run before processing your state updates"

This not the case when using await inside the handler!

Example

const [myNumber, setMyNumber] = useState(0);

async function handleClick(){
    setMyNumber(i => i + 1);
    await delay(100);
    setMyNumber(i => i + 1);
}

function delay(ms) {
    return new Promise(resolve => {
        setTimeout(resolve, ms);
    });
}

This will rerender the component twice!

Page

https://react.dev/learn/queueing-a-series-of-state-updates

Details

I suggest it should be mentioned as caveat/pitfall that if you call await inside an event handler,
all changes made to states before that await will then be flushed and trigger a rerender immediately, not waiting
for the event handler to finish completely.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Lee la página “Queueing a Series of State Updates” enlazada en el issue y reproduce el ejemplo de event-handler asíncrono proporcionado para confirmar el comportamiento. Actualiza esa página con una advertencia que explique que las actualizaciones de estado anteriores a un await pueden hacer flush antes de que termine el handler; el trabajo estará terminado cuando el ejemplo y las indicaciones sobre batching sean precisos y claros.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
javascript, react
Área
documentation
Tipo de issue
Documentación
Dificultad
1/5
Tiempo estimado
Menos de una hora
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
55/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.