React · Middle · Frage 21 von 75
Warum rendern alle Context-Konsumenten bei jedem Rendern des Providers neu?
<AuthContext value={{ user, login, logout }}>
{children}
</AuthContext>- 1Die Funktionen
loginundlogoutdürfen nicht in den Context - 2Context weckt immer alle Konsumenten; das lässt sich nicht ändern
- 3
valueist bei jedem Rendern des Providers ein neues Objekt
Antwort zeigen
Richtige Antwort: value ist bei jedem Rendern des Providers ein neues Objekt
Erklärung
React vergleicht value per Object.is. Ein Objektliteral ist immer neu, also weckt jedes Rendering des Providers alle Konsumenten. Die Lösung ist useMemo für den Wert (und useCallback für Funktionen) oder das Aufteilen des Contexts.