我在action目录中有一个文件,它是root.js. Root.js将编译里面的所有其他动作,并将其与bindActionCreators绑定
export const all = (store) => {
AUTH: bindActionCreators(AUTH.actions, store.dispatch),
....: .....
}
从我学到的东西,bindActionCreators是为了自动调度动作。 如果是这种情况,那么我如何从智能组件访问它?
我看到像dispatch(action)这样的东西。但是从现在开始我已经全局绑定它,我不认为我需要再指定发送。我该怎么做,还是有任何我误解的部分? 谢谢
答案 0 :(得分:3)
bindActionCreators
- 将创建一个动作对象,每个动作都包含在发送中
将它们作为参考传递给那些不了解redux
或dispatch
的非连接组件是很好的。
引自DOCS:
bindActionCreators的唯一用例是当你想传递一些时 动作创建者直到一个不知道Redux和你的组件 不想将调度或Redux商店传递给它。
因此,如果您希望连接组件将动作创建者传递给哑组件,则可以通过bindActionCreators
设置对象,并将其与道具传递给哑组件。
示例:
const myActionCreators = bindActionCreators(Auth.myActions, dispatch)
<DumbComponent {...myActionCreators} />
答案 1 :(得分:2)
建议的方法是让每个连接的组件文件导入所需的操作创建器,并使用connect
支持的“对象速记”:
import {addTodo, toggleTodo} from "./todoActions";
const actions = {addTodo, toggleTodo};
export default connect(null, actions)(TodoList);
// each TodoList instance now has this.props.addTodo and
// this.props.toggleTodo, which will dispatch actions when called.