Redux — это библиотека JavaScript с открытым исходным кодом для управления и централизации состояния приложения . Чаще всего она используется с такими библиотеками, как React или Angular , для создания пользовательских интерфейсов . Похожая на архитектуру Flux от Facebook (и вдохновленная ею) , она была создана Дэном Абрамовым и Эндрю Кларком. С середины 2016 года основными сопровождающими являются Марк Эриксон и Тим Дорр.
Redux — это небольшая библиотека с простым, ограниченным API, разработанная как предсказуемый контейнер для состояния приложения. Она работает аналогично функции сокращения , концепции функционального программирования .
Redux был создан Дэном Абрамовым и Эндрю Кларком в 2015 году. [3] Абрамов начал писать первую реализацию Redux во время подготовки к докладу на конференции [4] в React Europe [5] о горячей перезагрузке. Абрамов замечает: «Я пытался сделать доказательство концепции Flux, где я мог бы изменить логику . И это позволило бы мне путешествовать во времени. И это позволило бы мне повторно применять будущие действия к изменению кода». [6]
Абрамов был поражен сходством шаблона Flux с функцией сокращения. «Я думал о Flux как об операции сокращения с течением времени... ваши хранилища, они накапливают состояние в ответ на эти действия. Я думал о том, чтобы пойти дальше. Что, если бы ваше хранилище Flux было не хранилищем, а функцией сокращения?» [3]
Абрамов обратился к Эндрю Кларку (автору реализации Flux Flummox) в качестве соавтора. Среди прочего, он отдает должное Кларку за то, что тот сделал возможной экосистему инструментов Redux, помог разработать согласованный API , внедрил точки расширения, такие как промежуточное ПО и усилители хранилища. [3]
К середине 2016 года Абрамов присоединился к команде React и передал основные обязанности по поддержке Марку Эриксону и Тиму Дорру. [7]
В феврале 2019 года useReducer
был представлен как React hook в выпуске 16.8. Он предоставляет API, совместимый с Redux, что позволяет разработчикам создавать хранилища, подобные Redux, которые являются локальными для состояний компонентов. [8]