Улучшаем useReducer
5 мин
С появлением useReducer и useContext управление app state стало намного удобнее, а также отпала необходимость в использовании Redux.
Когда я в первый раз отказался от Redux в пользу стандартного useReducer я ощутил нехватку некоторых полезных функций:
- useSelector. Позволяет оптимизировать перерисовку компонент, которые используют
useContext, с помощьюmemo. - Единственный dispatch. Упрощает обновление app state так как не нужно использовать отдельный dispatch каждого
useReducer. - Cache. Не нужно заботиться о кэширование каждого
useReducer.
Тогда я решил попробовать улучшить стандартный useReducer, добавив эти 3 функции. Эта идея превратилась в новую небольшую библиотеку, которую я назвал Flex Reducer.
Интересный факт!
Flex Reducer не использует ни useReducer ни useContext в своей реализации.
Посмотрим плюсы и минусы использования стандартных useReducer + useContext и Flex Reducer на примере типичного Todo App.