React State и Redux State - это два различных способа управления состоянием в приложении React.
React State - это внутреннее состояние компонента React, которое может быть изменено с помощью вызова функции setState(). Состояние в React используется для хранения локальных данных компонента, таких как пользовательский ввод или состояние анимации. Состояние в React является локальным для компонента и не может быть доступно для других компонентов.
Redux State - это глобальное состояние приложения, которое хранится в хранилище store
и доступно для всех компонентов приложения. Состояние в Redux используется для хранения данных, которые используются в нескольких компонентах или на разных уровнях приложения. Cостояние может быть изменено только с помощью вызова action
, который передает данные в reducers
для обновления состояния.
**store
import { createStore } from "redux"
import initReducer from "./reducers"
const store = createStore(reducer, initialState)
store
берет на себя следующие задачи:
- содержит состояние приложения (application state);
- предоставляет доступ к состоянию с помощью
getState()
;
store.getState()
вернёт значение полей хранилища.
К примеру что бы посмотреть значение поля value_1 необходимо будет вызвать :
store.getState().value_1
- предоставляет возможность обновления состояния с помощью
dispatch(action)
; - Обрабатывает отмену регистрации слушателей с помощью функции, возвращаемой
subscribe(listener)
Позволяет получает нотификации об изменениях:
store.subscribe(() => {
console.log(store.getState())
})
React должен “знать” когда нужно обновлять компоненты store.subscribe
сообщает о том, что state обновился и обновляет UI. store.dispatch()
используется для обновления состояния.
initialState
— объект, представляющий начальное состояние хранилища. Он является вторым не обязательным аргументом методаcreateStore()
.
React State vs Redux State
React State | Redux State | |
---|---|---|
Область видимости | локальная | глобальная |
Управление | управляет компонентом | управляется хранилищем |
Обновление | обновлён вызовом функции setState() | обновлён только через action , который передает данные в reducer для изменения состояния |
Размер | содержит небольшие объёмы данных | содержит большие объёмы данных и сложные объекты |
Сложность | легче использовать | более сложный в освоении |
Предсказуемость | обеспечивает предсказуемое управление состоянием |
Рассмотреть вариант хранения данных в Redux store
стоит в следующих случаях:
- Если эти данные редко изменяются;
- Если одни и те же данные используются в нескольких (больше 2-3) связанных компонентах или в несвязанных компонентах;
- Если требуется отслеживать изменения данных.