Does `dispatch` function identity change when passed in context? [Re: eslint-plugin-react-hooks]
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 11.8k
- Forks
- 7.9k
- Ø Merge
- 1 T. 11 Std.
- Gemergte PRs (30 T.)
- 11
Beschreibung
Issue:
-
The docs for useReducer suggests omitting
dispatchfrom the dependencies list ofuseEffectanduseReducer.Note
React guarantees thatdispatchfunction identity is stable and won't change on re-renders. This is why it's safe to omit from theuseEffectoruseCallbackdependency list. -
The docs also recommend passing
dispatchfunction fromuseReducervia 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 touseEffectdependencies list.This conflicts with the first point above (docs suggesting omitting
dispatchfrom 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
dispatchthrough 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:
- Example Sandbox: https://codesandbox.io/s/vnq10rmwjy
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Lies zuerst die verlinkte Dokumentation zu useReducer und zur Hooks-FAQ, reproduziere dann die Warnung im CodeSandbox und vergleiche sie mit dem Verhalten von eslint-plugin-react-hooks. Die Aufgabe ist abgeschlossen, wenn festgestellt wurde, ob die Dokumentation eine Klarstellung benötigt oder das Plugin-Verhalten eine separate Korrektur erfordert, und die entsprechende Schlussfolgerung festgehalten wurde.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- eslint, javascript, react
- Bereich
- documentation, tooling
- Issue-Typ
- Dokumentation
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100