Почему мое новое состояние обернуто в свойство с именем действия? - PullRequest
1 голос
/ 04 ноября 2019

Я новичок в Redux и не понимаю, хорошо ли работает мой код или у меня есть проблемы с ним. Вот что я хочу сделать:

Я хочу отправить addTodo действие внутри компонента AddTask для изменения состояния. Поэтому я использую это:

export default connect(
  null,
  { addTask },
)(AddTask);

Затем я хочу передать реквизит из обновленного состояния компоненту Feed. Поэтому я использую это:

const mapStateToProps = state => {
  console.log(state);
  return { tasks: state.addTask.tasks };
};

export default connect(
  mapStateToProps,
  null,
)(Feed);

Я думаю, что странно, что для доступа к свойству задач я должен написать state.addTask.tasks (а не state.tasks). Это проблема с моим кодом, или как работает redux?

1 Ответ

0 голосов
/ 04 ноября 2019

Объект state должен содержать ваши редукторы, а не ваши действия. Они могут называться как угодно, присваивая имена свойств в combineReducers.

src / redurs / index.js

import { combineReducers } from "redux";
import taskReducer from "./taskReducer";
import otherReducer from "./otherReducer";

export default combineReducers({
  tasks: taskReducer,
  myOtherReducer: otherReducer
});

Эти свойства вы хотитев mapStateToProps, чтобы получить доступ к вашему состоянию. Ваши действия должны быть переданы как объект в функцию connect() в качестве второго аргумента. По сути, вам нужно объединить две вещи, которые вы пытались сделать:

src / components / Feed.js

const mapStateToProps = state => {
  return { tasks: state.tasks };
};

export default connect(
  mapStateToProps,
  { addTask },
)(Feed);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...