React · Middle · Pytanie 21 z 75
Dlaczego wszyscy konsumenci kontekstu przerenderowują się przy każdym renderze providera?
<AuthContext value={{ user, login, logout }}>
{children}
</AuthContext>- ✓Poprawna odpowiedź:
valueto nowy obiekt przy każdym renderze providera - 2Kontekst zawsze budzi wszystkich konsumentów; nie da się tego zmienić
- 3Funkcji
loginilogoutnie można umieszczać w kontekście
Wyjaśnienie
React porównuje value przez Object.is. Literał obiektu jest zawsze nowy, więc każdy render providera budzi wszystkich konsumentów. Rozwiązanie: useMemo dla wartości (i useCallback dla funkcji) lub podział kontekstu na części.