Zarządzanie stanem · Middle · Pytanie 6 z 75
Dlaczego wszyscy konsumenci kontekstu renderują się ponownie przy każdym renderze providera?
<AuthContext value={{ user, login, logout }}>
{children}
</AuthContext>- ✓Poprawna odpowiedź:
valueto za każdym razem nowy obiekt, a React porównuje go przezObject.is - 2Context zawsze renderuje konsumentów przy każdym renderze aplikacji
- 3Funkcji nie można przekazywać przez kontekst, więc React tworzy je od nowa
Wyjaśnienie
Nowy literał obiektu nigdy nie jest równy poprzedniemu. Memoizuj: const value = useMemo(() => ({ user, login, logout }), [user, login, logout]) i useCallback dla funkcji (React Compiler może to zrobić automatycznie).