С появлением 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.