[Suggestion]: Section "Queueing a Series of State Updates": await in event handler cause immediate rerender
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- JavaScript
- Estrelas
- 11.8k
- Forks
- 7.9k
- Merge médio
- 1d 11h
- PRs com merge (30d)
- 11
Descrição
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.
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Leia a página “Queueing a Series of State Updates” vinculada na issue e reproduza o exemplo de event-handler assíncrono fornecido para confirmar o comportamento. Atualize essa página com uma observação explicando que as atualizações de estado anteriores a um await podem sofrer flush antes que o handler termine; o trabalho estará concluído quando o exemplo e as orientações sobre batching estiverem corretos e claros.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- javascript, react
- Domínio
- documentation
- Tipo de issue
- Documentação
- Dificuldade
- 1/5
- Tempo estimado
- Menos de uma hora
- Status de atividade
- Estagnada
- Clareza
- Claramente especificada
- Facilidade para iniciantes
- 55/100