React 16.3.0 был выпущен, и Context API больше не является экспериментальной функцией. Дэн Абрамов (создатель Redux) написал хороший комментарий здесь об этом, но это было 2 года , когда контекст был еще особенность экспериментальной.
Мой вопрос, по вашему мнению / опыт , когда я должен использовать React контекст над Реагировать Redux , и наоборот?
javascript
reactjs
redux
react-redux
react-context
Alfrex92
источник
источник
duix
пакет npm. Это всего лишь простой менеджер состояний с обратными вызовами, который очень легко реализовать. Просто чтобы быть ясно: я создатель.Ответы:
Так как Context больше не является экспериментальной функцией, вы можете напрямую использовать Context в своем приложении и отлично подойдет для передачи данных глубоко вложенным компонентам, для которых оно было разработано.
Как написал Марк Эриксон в своем блоге :
Redux
является гораздо более мощным и предоставляет большое количество функций , которыеContext Api
не обеспечивает, а также в качестве Как @danAbramov упоминалосьДело за Redux, чтобы фактически обновить свою реализацию, чтобы придерживаться новейшего API контекста
Новейший Context API можно использовать для приложений, где вы просто используете Redux для передачи данных между компонентами, однако приложения, которые используют централизованные данные и обрабатывают запрос API в создателях Action, используют
redux-thunk
илиredux-saga
все еще нуждаются в избыточности. Помимо этого, у редукса есть и другие связанные библиотеки, например,redux-persist
которые позволяют сохранять данные хранилища в localStorage и обновлять данные при обновлении, что контекстный API по-прежнему не поддерживает.Как упомянул @dan_abramov в своем блоге, вам может не понадобиться Redux , у такого приложения есть такое полезное приложение, как
С этими многочисленными приложениями слишком рано говорить, что Redux будет заменен новым Context API
источник
Если вы используете Redux только для того, чтобы избежать передачи реквизитов глубоко вложенным компонентам , тогда вы можете заменить Redux на
Context
API. Именно для этого случая использования.С другой стороны, если вы используете Redux для всего остального (наличие предсказуемого контейнера состояний, обработка логики вашего приложения вне ваших компонентов, централизация состояния вашего приложения, использование Redux DevTools для отслеживания, когда, где, почему и как состояние вашего приложения изменив или используя плагины, такие как Redux Form , Redux Saga , Redux Undo , Redux Persist , Redux Logger и т. д.), тогда нет абсолютно никаких причин для отказа от Redux.
Context
API не предоставляет какой - либо из этого.И я лично считаю, что расширение Redux DevTools - это удивительный, недооцененный инструмент отладки, который сам по себе оправдывает продолжение использования Redux.
Некоторые ссылки:
источник
Я предпочитаю использовать redux с redux-thunk для выполнения вызовов API (также используя Axios) и отправки ответа редукторам. Это чисто и легко понять.
API контекста очень специфичен для компонентаact-redux о том, как компоненты React связаны с хранилищем. Для этого хорошо подойдет реакт-редукс. Но если вы хотите, так как Context официально поддерживается, вы могли бы использовать Context API вместо response-redux.
Таким образом, вопрос должен заключаться в том, что Context API vs response-redux, а не Context API vs redux. Также вопрос слегка мнительный. Так как я знаком с response-redux и использую его во всех проектах, я буду продолжать его использовать. (У меня нет стимула меняться).
Но если вы изучаете Redux только сегодня, и вы нигде не использовали его, то стоит дать шанс Context API и заменить реагировать на ваш собственный код Context API. Может быть, так намного чище.
Лично это вопрос знакомства. Нет четкой причины выбирать один над другим, потому что они эквивалентны. И внутренне, Response-Redux использует Контекст в любом случае.
источник
Единственные причины использовать Redux для меня:
Вероятно, вам не нужен уровень косвенности для всего приложения, поэтому можно смешивать стили и использовать локальное состояние / контекст и Redux одновременно.
источник
С: Когда использовать Redux?
источник