Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Як NgRx реалізує патерн Redux?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**NgRx** реалізує патерн Redux у стилі Angular: єдине сховище `Store`, стан лише для читання, зміни через чисті `Reducer`-функції, побічні ефекти в `Effects` і дані через `Selectors`. **Ключове:** на відміну від класичного Redux, NgRx побудований на RxJS, тож замість звичайних функцій ти працюєш із потоками (`Observables`).Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняNgRx реалізує патерн **Redux** у стилі Angular - з тими самими принципами, але мовою Angular-архітектури. Ось як це виглядає: ### 1. **Single source of truth** (єдине сховище стану) Увесь стан застосунку зберігається в `Store` - одному центральному об'єкті. Це як єдиний глобальний state, як у Redux. ### 2. **State лише для читання** Компоненти не можуть напряму змінювати стан. Вони лише надсилають `Actions` через `dispatch()` - це як у Redux: тільки через події. ### 3. **Зміни через чисті функції (`Reducer`)** Reducers приймають поточний стан і `Action` і повертають **новий** стан. Це головне правило Redux: чисті функції = передбачуваність. ### 4. **Side effects окремо (`Effects`)** Усі асинхронні дії (наприклад, запити до API) винесено в `Effects`. Це як `redux-saga` або `redux-thunk`, тільки на RxJS. ### 5. **Селектори (`Selectors`)** Щоб брати потрібні дані зі store, використовуються `selectors`. Це як `reselect` у Redux: продуктивно, зручно, безпечно. ### Відмінність? NgRx побудований на **RxJS** - усе реактивне. Ти працюєш не зі звичайними функціями, а з потоками (`Observables`). **Висновок:** NgRx - це адаптація Redux-патерна під Angular: чітка структура, реактивність через RxJS і суворий контроль стану.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.