reactjs / reactjs/react.dev

Does `dispatch` function identity change when passed in context? [Re: eslint-plugin-react-hooks]

Ouverte
#1,889 13 commentaires 12 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

Issue:
  • The docs for useReducer suggests omitting dispatch from the dependencies list of useEffect and useReducer.

    Note
    React guarantees that dispatch function identity is stable and won't change on re-renders. This is why it's safe to omit from the useEffect or useCallback dependency list.

  • The docs also recommend passing dispatch function from useReducer via context to avoid passing callbacks down a large component tree:

  • eslint-plugin-react-hooks warns if dispatch (that's been passed from context) is not added to useEffect dependencies list.

    This conflicts with the first point above (docs suggesting omitting dispatch from the dependencies list)

    React Hook useCallback has a missing dependency: 'dispatch'. Either include it or remove the dependency array.
    

Is this:

  • Expected behavior after passing dispatch through context - so the docs should have a small amendment for this scenario?
  • Or a bug in eslint-plugin-react-hooks?

Thanks for the help!!

Working Sample:

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

Lisez d’abord la documentation liée sur useReducer et la FAQ Hooks, puis reproduisez l’avertissement dans CodeSandbox et comparez-le au comportement de eslint-plugin-react-hooks. C’est terminé lorsqu’il a été déterminé si la documentation nécessite une clarification ou si le comportement du plugin nécessite une correction distincte, et que la conclusion pertinente a été consignée.

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

Évaluation

Stack technique
eslint, javascript, react
Domaine
documentation, tooling
Type d'issue
Documentation
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

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