Redux был и до сих пор очень популярен для больших приложений, где вам нужно иметь возможность поддерживать единый источник правды, но передавать разные части магазина в качестве поддержки различных компонентов. Преимущество этого пакета в том, что он может упростить отладку, а при правильной реализации очень надежен.
Что касается промежуточного программного обеспечения для избыточных ресурсов, то они обычно используются для асинхронной интеграции. Thunk и Saga - две популярные библиотеки. Контекст должен иметь возможность обрабатывать asyn c без каких-либо других зависимостей.
Context API - это более новая функция, выпущенная как часть React 16.3, которая позволяет упростить создание магазина, но, на мой взгляд, это может быть более трудным шкала. У меня нет особого опыта использования Context API, но он стал очень популярным, и опытный разработчик может делать все, что делает Redux.
Я бы сказал, что, как правило, не рекомендуется использовать оба варианта, когда один подход будет работать так же хорошо. Тем не менее, приложение, которым я управляю, использует оба, потому что когда оно было впервые создано, Context API 16.3 еще не был выпущен, так что redux был единственным диспетчером состояний для всего приложения, но позже некоторые локализованные состояния компонентов были обновлены, чтобы иметь свой собственный контекст хранить. Однако я не думаю, что это лучшая практика.
Подробнее о технических различиях здесь .