为什么我的新状态包含在以动作命名的属性中?

我是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是如何工作的?

ning419 回答:为什么我的新状态包含在以动作命名的属性中?

state对象应该包含您的化简,而不是您的操作。他们可以通过在combineReducers中分配属性名称来随意命名。

src / reducers / 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);
本文链接:https://www.f2er.com/3164677.html

大家都在问