REACT-REDUX ‒ STATE-МЕНЕДЖЕР ДЛЯ REACT JS
					 24.09.2022 18:34
					[1. Информационные системы и технологии]
					Автор: Кіш Віктор Вікторович, студент, Державний вищий навчальний заклад «Ужгородський національний університет», м. Ужгород; Йовбак Ніка Ігорівна, студентка, Державний вищий навчальний заклад «Ужгородський національний університет», м. Ужгород 
					
					
Redux — відкрита JavaScript бібліотека, котра призначена для керування станом програм Java Script. Найчастіше її використовують разом з React з метою побудови інтерфейсів користувача.
Redux зберігає стан всього застосунку в дереві об'єктів в одному сховищі. Одне дерево станів полегшує налагодження або перевірку програми. Це також дозволяє зберігати state додатку під час розробки, для прискорення циклу розробки.
Store — це об'єкт, який з'єднує actions, які представляють факт того, що «щось сталося» і reducers, які оновлюють state відповідно до цих actions разом.
 - Store містить стан додатку (application state);
 - надає доступ до стану за допомогою getState()
 - може випускати оновлення стану за допомогою dispatch(action)
 - обробляє скасування реєстрації слухачів за допомогою функції, що   повертається subscribe(listener).
Давайте розглянемо приклад використання React-Redux на прикладі додатку з обробкою даних користувачів:
Таким чином ми організовуємо reducer:
const initialState = {
    users: [],
    loading: false,
    error: null,
}
export const userReducer = (state = initialState, action) => {
    switch(action.type){
        case UserActionTypes.FETCH_USERS:
            return {...state, loading: true}
        case UserActionTypes.FETCH_USERS_SUCCESS:
            return {...state, beers: action.payload, loading: false}
        case UserActionTypes.FETCH_USERS_ERROR:
            return {...state, error: action.payload, loading: false}
        default:
            return state
    }}
Так ми реалізуємо action:
export const fetchUser = () => {
    return async (dispatch) => {
        try{
            dispatch({type: UserActionTypes. FETCH_USERS })
            const response = await axios.get(' https://jsonplaceholder.typicode.com/users ')
            dispatch({type: UserActionTypes. FETCH_USERS_SUCCESS, payload: response.data})
        } catch(e) {
            dispatch({type: UserActionTypes. FETCH_USERS_ERROR, payload: "oops looks like something went wrong :("})
        }}}
Отже, ми розглянули роботу з найпопулярнішим state-менеджером для React JS. Він дозволяє майстерно  керувати даними, в результаті чого на його основі пізніше був випущений redux-toolkit з більшими можливостями. Але до сих пір React-Redux є чудовим рішенням для більшості проектів.
Література
1. https://github.com/reduxjs/redux/releases/tag/v4.1.0
2. https://react-redux.js.org/introduction/getting-started
3. https://www.javatpoint.com/react-redux
__________________________
Науковий керівник: Кіш Надія Василівна, кандидат педагогічних наук, доцент, Державний вищий навчальний заклад «Ужгородський національний університет», м. Ужгород