Перейти до основного контенту

Робота dispatch в redux: основні принципи і механізми

7 хв читання
2023 переглядів
Redux- це бібліотека для управління станом застосунку в JavaScript. Одним з основних понять у Redux єdispatch. Dispatch - це функція, яка використовується для відправки подій (екшенів) на обробку в Redux.Dispatch виступає в ролі посередника між компонентами таредюсерами, які змінюють стан застосунку. Коли компонент викликає dispatch і передає йому подію, Redux передає цю подію всім редюсерам. Редюсери приймають події і, виходячи з них, змінюють стан.Dispatch приймає об'єкт-подію, який містить два властивості:type таpayload. Тип події вказує редюсерам, яке саме зміну потрібно провести, а payload містить дані, необхідні для виконання цього зміни.Використання dispatch вRedux дозволяє поліпшити структуру коду та зробити його більш передбачуваним. Він дозволяє формувати чіткий потік даних і спрощує відстеження змін.Що таке dispatch в redux?Дія - це простий об'єкт, який описує подію, що відбувається, і містить принаймні два поля: type (рядкове значення, яке описує тип дії) та payload (дані, необхідні для оновлення стану).Коли викликається функція dispatch, вона передає дію всім зареєстрованим редюсерам у додатку. Кожен редюсер приймає поточний стан і дію, та повертає новий стан.Для прикладу, розглянемо простий редюсер, який обробляє дію "INCREMENT", збільшуючи лічильник на 1:Таким чином, ми можемо використовувати функцію dispatch,щоб надіслати дію в редюсер:Редюсер отримає цю дію і оновить стан, збільшуючи лічильник на 1.Dispatch - це ключовий інструмент у Redux, який забезпечує односторонній потік даних і дозволяє оновлювати стан програми у відповідь на події.Як це працює?Коли ми викликаємо функцію dispatch, ми передаємо їй дію у вигляді об'єкта з полем "type". Дія також може містити інші корисні дані, такі як дані для оновлення стану або дані для виконання асинхронних операцій.Коли dispatch викликається, Redux передає дію і поточний стан сховища у функцію-редюсер (reducer). Редюсер - це чиста функція, яка приймає поточний стан і дію, і повертає новий стан програми.Dispatch також запускає процес оновлення стану в Redux. Коли редюсеробробляє дію, він створює і повертає новий об'єкт стану. Redux замінює поточний стан сховища на новий стан і надсилає сповіщення всім підписникам про те, що стан змінився.Усі підписники сховища можуть відстежувати зміни стану, підписуючись на його оновлення. Коли стан оновлюється, Redux викликає збережені функції-підписники і передає їм новий стан. Таким чином, усі компоненти, які залежать від стану Redux, можуть бути оновлені з урахуванням цих змін.Використання dispatch дозволяє нам надсилати дії і оновлювати стан у нашому застосунку. Він є ключовою концепцією в Redux і дозволяє нам керувати станом застосунку в одному місці, роблячи код більш передбачуваним і легкодоступним.Дії та типи дійДії містять два обов'язкових поля:ПолеОпис typeСтрока, що визначає тип дії. Зазвичай задається у вигляді константи, щоб уникнути помилок при написанні коду. payloadДодаткова інформація, передана разом із дією. Може містити будь-які дані, необхідні для обробки дії.
const incrementCounter = (amount) => ;>;

У цьому прикладі дія incrementCounter збільшує значення лічильника на задану кількість. Тип дії вказано як INCREMENT_COUNTER, а значення, на яке потрібно збільшити лічильник, передається у полі payload.

Типи дій мають синтаксичну угоду у вигляді рядка, написаного великими літерами з підкресленнями замість пробілів. Це дозволяє легше ідентифікувати та обробляти різні типи дій всередині редюсерів.

Створення дії

Для створення дії в Redux ми використовуємо функцію (action creator), яка повертає об'єкт дії. Ця функція може приймати параметри, які будуть включені в об'єкт дії.КрокПриклад1Визначте тип дії, який є рядком і унікально ідентифікує дану дію. Наприклад, "ADD_TODO" або "INCREMENT_COUNTER".2Створіть функцію-генератор дії (action creator), яка приймає необхідні параметри і повертає об'єкт дії. В об'єкті дії обов'язково має бути поле "type" з типом дії і можуть бути присутніми інші корисні дані. Наприклад:function addTodo(text) return type: 'ADD_TODO', text;3Використовуйте створену функцію-генератор дії для створення дій у коді застосунку. Наприклад:const action = addTodo('Купити молоко');Таким чином, створення дій у Reduxдозволяє нам передавати інформацію та вказувати тип події, що сталася в додатку. Ці дії будуть надіслані в сховище за допомогою функції dispatch і будуть оброблені відповідно до певних редюсерів (reducers).Обробка діїПри використанні бібліотеки Redux, дії (actions) є простими об'єктами, які описують те, що сталося в додатку. Коли дія створена, вона передається в функцію dispatch.Dispatch – це метод Redux Store, який приймає дію в якості аргумента. Він є основною функцією для передачі дії між компонентами та сховищем Redux. Коли dispatch викликається, він передає дію в редюсери.Редюсери – це чисті функції, які приймають попередній стан сховища та дію, і повертають новий стан. Редюсери визначають, як буде оброблено кожну дію і як зміниться стан.додатки.Таким чином, dispatch виконує наступний цикл роботи:Створює дію і передає її у функцію dispatch.Dispatch передає дію у редюсери.Редюсери обробляють дію і повертають новий стан.Новий стан зберігається у сховищі Redux.Компоненти, підписані на сховище, отримують оновлений стан і повторно рендеряться за потреби.Таким чином, dispatch є центральним механізмом у Redux для управління станом застосунка і забезпечує односпрямований потік даних у застосунку.