Как мне получить доступ к состоянию одного редуктора в другом в реагировать редуктора. Состояние потока между редукторами и магазином - PullRequest
1 голос
/ 15 февраля 2020

Я абсолютный новичок в Reaction-redux, и я смотрел много видео и статей, документов и не мог понять, как состояние передается между редукторами и между хранилищами и редукторами.

У меня состояние для каждый редуктор, как этот

const initState = {todos: []}

продолжение редуктора = (состояние = initState, действие) ....

Аналогично редуктор 2 с другим состоянием

initState2 = {todo: ""}

reducer2 = (состояние = initState2, действие ) ...

А потом я импортирую и объединяю редукторы. Здесь я использую два разных редуктора с разными состояниями, и это правильный путь? Если это так, то как можно назвать редукс единым состоянием, если каждый редуктор имеет свое собственное индивидуальное состояние.

Разве у нас нет единого состояния в хранилище, к которому обращаются все редукторы и диспетчерские действия для изменения состояния хранить напрямую, а не менять магазин редуктора. Любая помощь приветствуется, и это может показаться глупым вопросом, но заполнение пробелов действительно важно, и у многих начинающих те же сомнения, что и у меня, и, пожалуйста, помогите. Спасибо

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

Как можно назвать редукцию единым состоянием, если каждый редуктор имеет свое собственное индивидуальное состояние.

Поскольку состояние не сохраняется в редукторах. Состояние сохраняется только в магазине, и существует только один магазин. Вот почему он называется единым состоянием.

Чтобы создать магазин:

const store = createStore(myBeautifulReducers)

В вашем случае myBeautifulReducers будет:

const myBeautifulReducers = combineReducers({reducer, reducer2});

myBeautifulReducers будет объектом он содержит как редукторы (reducer и reducer2), так и логику c, которую вы написали в каждом из них (операторы switch и т. д.).

1 голос
/ 15 февраля 2020

Вам нужен только 1 редуктор для хранения ваших задач.

Как можно назвать редукцию единым состоянием, если каждый редуктор имеет свое собственное индивидуальное состояние.

Приложение фактически имеет только 1 глобальное хранилище, в котором хранится все состояние приложения. То, что возвращает редуктор, - это то, что эффективно сохраняется в хранилище.
Конфигурация того, что хранится, является картой (ключ-значение), где ключ определен в редукторе root, а значение - это то, что возвращается из функция редуктора.

То, как вы должны смотреть на него, заключается в том, что представление «немое», в котором единственное, что он делает, - сообщает приложению, чего оно хочет, отправляя действие. Это действие является просто событием, которое помечено некоторой строкой, которую вы даете ему, чтобы четко определить, чего хочет представление. Редуктор перехватывает это действие и соответственно обновляет состояние в хранилище. Это состояние, в свою очередь, доступно для всех компонентов вашего приложения. Так что это явно глобально.

В вашем примере представление просто скажет приложению, например: «Добавить задачу». Редуктор перехватит это сообщение и вернет массив с добавленным todo. Этот возвращенный массив - то, что будет сохранено в магазине.

Если вы хотите отдельное «todo», это, вероятно, будет относиться к текущему «активному». Отметив его как таковой, вы сделаете цель более выразительной.
Это единичное состояние, потому что ваш root редуктор в конечном итоге будет выглядеть примерно так:

{
    "activeTodo": activeTodoReducer
    "todos": todosReducer
}

И вы можете получить доступ к этим ключам / значениям в вашем компоненты во всем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...