Spec-Zone.ru › Redux

createStore(reducer, [preloadedState], [enhancer])

Создаёт Redux хранилище, которое содержит полное состояние дерева вашего приложения. В вашем приложении должно быть только одно хранилище.

Аргументы

  1. reducer (Функция): Функция сокращения, которая возвращает следующее дерево состояния, учитывая текущее дерево состояния и действие для обработки.

  2. [preloadedState] (любое): Начальное состояние. Вы можете указать его, чтобы добавить состояние из сервера в универсальных приложениях или восстановить ранее сериализованную пользовательскую сессию. Если вы создали reducer с помощью combineReducers, это должен быть простой объект с той же формой, что и ключи, переданные в него. В противном случае вы можете передать что угодно, что может понять ваш reducer.

  3. [enhancer] (Функция): Улучшитель хранилища. Вы можете указать его, чтобы улучшить хранилище с помощью возможностей сторонних разработчиков, таких как middleware, путешествия во времени, сохранение и т. д. Единственный улучшитель хранилища, который поставляется с Redux, — это applyMiddleware().

Возвращает

(Store): Объект, содержащий полное состояние вашего приложения. Единственный способ изменить его состояние — это отправка действий. Вы также можете подписаться на изменения в его состоянии, чтобы обновить пользовательский интерфейс.

Пример

import { createStore } from 'redux'

function todos(state = [], action) {
  switch (action.type) {
    case 'ADD_TODO':
      return state.concat([action.text])
    default:
      return state
  }
}

const store = createStore(todos, ['Use Redux'])

store.dispatch({
  type: 'ADD_TODO',
  text: 'Read the docs'
})

console.log(store.getState())
// [ 'Use Redux', 'Read the docs' ]

Советы

  • Не создавайте более одного хранилища в приложении! Вместо этого используйте combineReducers, чтобы создать единственный корневой reducer из многих.

  • Состояние Redux обычно представляет собой простые JS объекты и массивы.

  • Если ваше состояние — обычный объект, убедитесь, что вы никогда его не изменяете! Неизменяемые обновления требуют создания копий каждого уровня данных, обычно с помощью оператора разброса объектов ( return { ...state, ...newData } ).

  • Для универсальных приложений, работающих на сервере, создавайте экземпляр хранилища с каждым запросом, чтобы они были изолированы. Отправьте несколько действий по извлечению данных в экземпляр хранилища и дождитесь их завершения, прежде чем отображать приложение на сервере.

  • При создании хранилища Redux отправляет фиктивное действие в ваш reducer для заполнения хранилища начальным состоянием. Вам не следует обрабатывать фиктивное действие напрямую. Просто помните, что ваш reducer должен возвращать некое начальное состояние, если состояние, переданное ему в качестве первого аргумента, это undefined, и всё готово.

  • Для применения нескольких улучшителей хранилища, вы можете использовать compose().

© 2015–2021 Dan Abramov
Licensed under the MIT License.
https://redux.js.org/api/createstore

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API