Redux

Reduxвідкрита JS бібліотека призначена для управління станом програм JavaScript[4]. Найчастіше використовується разом з React або Angular для побудови інтерфейсів користувача.

Redux
Тип бібліотека JavaScript
Автор(и) Ден Абрамов та Ендрю Кларк
Розробники Dan Abramovd, Andrew Clarkd, Mark Eriksond, Timothy Dorrd, Benkiraned, Єлизавета II і Пабло Пікассо
Перший випуск 2 червня 2015 (2015-06-02)[1]
Стабільний випуск 4.0.5 (24 грудня 2019 (2019-12-24)[2])
Версії 4.1.0 (24 квітня 2021)[3]
Репозиторій github.com/reduxjs/redux
Платформа крос-платформова програма
Мова програмування JavaScript
Стан розробки Активний
Ліцензія MIT
Вебсайт redux.js.org

Історія

Redux був створений Деном Абрамовим і Ендрю Кларком у 2015 році.[1] Redux був створений під впливом Flux, розробленого Facebook, і під впливом функційної мови програмування Elm.[5]

Redux — це контейнер cтанів для застосунків JavaScript. Він допомагає розробникам оптимізувати код програми. Крім того, він забезпечує вдосконалення досвіду розробника, наприклад, редагування живого коду в поєднанні з відладчиком, що працює під час роботи.

Redux можна використовувати разом із React або іншими бібліотеками. Розмір файлу Redux невеликий, 2kB, включаючи залежності.[6]

Основна концепція

Єдине джерело істини

Redux зберігає cтан всього застосунку в дереві об’єктів в одному сховищі. Одне дерево станів полегшує налагодження або перевірку програми; це також дозволяє зберігати стан вашого застосунку в процесі розробки, для прискорення циклу розробки.

Стор (Store) - це об'єкт, який з'єднує екшени, які представляють факт того, що "щось сталося" і редюсери, які оновлюють стан (state) відповідно до цих екшинів разом.

  • Стор містить стан додатку (application state);
  • надає доступ до стану за допомогою getState()
  • може випускати оновлення стану за допомогою dispatch(action)
  • обробляє скасування реєстрації слухачів за допомогою функції, що повертається subscribe(listener).[7]

Стан призначений тільки для читання

Єдиний спосіб змінити стан — це виокремити дію, об’єкт, що описує те, що сталося. Це гарантує, що ні перегляди, ні зворотні виклики мережі ніколи не будуть змінювати стан. Натомість вони виражають тільки намір це зробити. Всі зміни — централізовані і відбуваються одна за іншою у чіткій послідовності. Оскільки дії є простими об’єктами, вони можуть бути зареєстровані, серіалізовані, збережені та пізніше відтворені для налагодження або тестування.

Екшени - це структури, які передають дані з застосування в стан. Вони є єдиними джерелами інформації для стану. Redux відправляє їх їх в стор, використовуючи метод store.dispatch().[8]

Зміни за допомогою чистих функцій

Редьюсери (redusers) — це лише чисті функції, які приймають попередній стан і дію тобто state, і повертають наступний стан. Редюсери визначають, як стан додатки змінюється у відповідь на екшени (action), які відправлені в стан. Екшени тільки описують, що сталося, але не описують, як змінюється стан додатка.[9]

В процесі розробки редьюсери можуть бути розділені на дрібніші редьюсери, які управляють певними частинами дерева станів. Оскільки редьюсери — це лише функції, ви можете контролювати порядок їх надсилання, передавати додаткові дані або навіть створювати повторювані редьюсери для звичайних завдань, таких як розбиття на сторінки.

Примітки

  1. com/reactjs/redux/releases/tag/v0.2.0 Initial release tag
  2. com/reactjs/redux/releases Releases — ReactJS/Redux. GitHub.
  3. Release 4.1.0 — 2021.
  4. Getting Started with Redux | Redux. redux.js.org (англ.). Процитовано 21 вересня 2020.
  5. smashingmagazine. com/2016/06/an-introduction-to-redux/ An Introduction To Redux . Smashing Magazine .
  6. com/reactjs/redux reactjs/redux: Predictable state container for JavaScript apps . GitHub .
  7. Стор · Redux documentation in russian. rajdee.gitbooks.io. Процитовано 21 вересня 2020.
  8. Экшены · Redux documentation in russian. rajdee.gitbooks.io. Процитовано 21 вересня 2020.
  9. Редюсеры · Redux documentation in russian. rajdee.gitbooks.io. Процитовано 21 вересня 2020.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.