Представим есть 20 эндпоинтов, которые возвращают данные, которые успешно должны быть расшарины на весь проект. Так же данные имеют сложную структуру вложенностей. Так же для усложнения нужно делать например некий запрос только после ответа с определённого ендпоинта с использованием данных из ответа первого.
если взять редакс, то все вызовы выносятса в саги, или эпики, или санки, где легко сделать второй запрос автоматом после первого,
для вытаскивания данных из нужного слоя вложенности юзаем селекторы,
был опыт тестирования чат бота на реакте, так там саги выполняли по 3-4 запроса последовательно, и была очень нехилое разветвление логики
Теперь я пытаюсь представить как это сделать на контексте и редьюсере, и как-то сложно выходит.
Я конечно могу очень сильно ошибаться, но для каждого кейса своё решение, если это простая апка, с простым набором данных, с минимум апиколов, то пожалуйста, если это что-то большое и сложное, как чат бот, то логика общения с апишкой должна быть в абстрактном слое отдельно от view представления, т.е. в редаксе.
Ну тут все проще совсем чуток, что дает нам redux? Он дает нам стор и persist (который по сути сериализует данные в AsyncStorage) и dispatch. Больше нам от него ничего не надо. Reducers мы пишем сами, саги пишем сами и actions вызываем сами, то есть редакс нам нужен только до тех пор, пока мы не обновились до контекста. У редакса опять же есть эклсистема дебаггеров, это жирный плюс, однако с практической точки зрения, ребята тз реакта сделали все инструменты для того, чтобы отказаться от внешних зависимостей. Что дергать в саге - не важно, и там и там есть dispatch, редьюсеры - useReducer отлично работает.
Однако есть такая штука, как привычка и знакомые нам инструменты, зарекомендовавшие себя со временем, трудно исключить из работы. Тут ничего не поделаешь.
По поводу большого стэйта - всем рекомендую разбить его на много мелких, увы поддержка и валидация состояния на клиенте и синхронизация его с бэкендом это больно и дорого