React · Senior · Frage 21 von 75
Warum hat useContext keine „Selektoren“, und wie umgeht man das?
- 1Context weckt alle Konsumenten; den Context aufteilen oder einen externen Store nutzen
- 2Hat es doch: Das zweite Argument ist
useContext(Ctx, selector) - 3Selektoren sind unnötig: React vergleicht die Felder des Objekts
valueselbst
Antwort zeigen
Richtige Antwort: Context weckt alle Konsumenten; den Context aufteilen oder einen externen Store nutzen
Erklärung
Jede Änderung an value rendert alle neu, die useContext aufrufen, auch wenn sie nur ein Feld brauchen. Workarounds: mehrere schmale Contexts, memoisierte Konsumenten, die Bibliothek use-context-selector oder ein Store mit Selektor-Abonnements (Zustand, Redux, Jotai).