Выбор ответа Middle Context и стейт-менеджеры обновлено
Зачем делить контекст на данные и действия
Вопрос
Команда разделила один контекст на TodosStateContext (список) и TodosDispatchContext (функция dispatch из useReducer). Что это даёт?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Кому нужен лишь dispatch, не рендерятся от списка. dispatch из useReducer имеет стабильную идентичность на всё время жизни компонента.
Варианты ответа
- Кому нужен лишь
dispatch, не рендерятся от спискаправильный ответ - Список начинает обновляться синхронно, без батчинга
- React перестаёт перерисовывать потребителей списка
- Это нужно для совместимости с Redux DevTools
Разбор
dispatch из useReducer имеет стабильную идентичность на всё время жизни компонента. Если положить его в отдельный контекст, значение этого контекста никогда не меняется, и кнопки «добавить» или «удалить», которые только отправляют экшены, не перерисовываются при каждом изменении списка.
- Синхронность обновлений от разделения не меняется.
- Потребители списка по-прежнему перерисуются при его изменении, это и нужно.
- DevTools тут ни при чём.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Кого перерисует смена value в Context
Следующий вопрос
Когда Context, а когда внешний стор