reactjs / reactjs/react.dev

Timing of effects

Ouverte
#1,598 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
JavaScript
Étoiles
11.8k
Forks
7.9k
Merge moyen
1 j 11 h
PR mergées (30 j)
11

Description

Although useEffect is deferred until after the browser has painted, it's guaranteed to fire before any new renders. React will always flush a previous render's effects before starting a new update.

Is this true in both concurrent and non-concurrent mode. It would appear intuitively that these two call-sites in non-concurrent mode would be deterministic:

ReactDOM.render(<Foo>, container)
ReactDOM.render(<Foo>, container)

That is it would invoke a new render before the effect in the first render has been invoked.

If so would it make more sense to specify it is only in relation to effects i.e previous effects are guaranteed to run before future effects.

As it stands, it looks appears as though the "render" call-site is non-deterministic in non-concurrent.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par examiner l’affirmation citée de la documentation selon laquelle les effets sont vidés avant les nouveaux rendus, puis comparez sa formulation avec les deux sites d’appel de ReactDOM.render ainsi qu’avec le comportement concurrent et non-concurrent. C’est terminé lorsque la documentation énonce clairement la garantie prise en charge et détermine si elle s’applique aux rendus en général ou uniquement à l’ordre d’exécution des effets.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, react
Domaine
documentation
Type d'issue
Documentation
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.