React · Middle · Запитання 21 з 75
Чому всі споживачі контексту перемальовуються за кожного рендеру провайдера?
<AuthContext value={{ user, login, logout }}>
{children}
</AuthContext>- ✓Правильна відповідь:
value- новий об'єкт на кожному рендері провайдера - 2Контекст завжди будить усіх споживачів, це не змінити
- 3Функції
loginіlogoutне можна класти в контекст
Пояснення
React порівнює value через Object.is. Об'єктний літерал завжди новий, тому кожен рендер провайдера будить усіх споживачів. Рішення - useMemo для значення (і useCallback для функцій) або поділ контексту на частини.