React redux bindActionCreators用法

时间:2017-09-14 09:03:20

标签: reactjs redux react-redux

我在action目录中有一个文件,它是root.js. Root.js将编译里面的所有其他动作,并将其与bindActionCreators绑定

export const all = (store) => {
    AUTH: bindActionCreators(AUTH.actions, store.dispatch),
    ....: .....
}

从我学到的东西,bindActionCreators是为了自动调度动作。 如果是这种情况,那么我如何从智能组件访问它?

我看到像dispatch(action)这样的东西。但是从现在开始我已经全局绑定它,我不认为我需要再指定发送。我该怎么做,还是有任何我误解的部分? 谢谢

2 个答案:

答案 0 :(得分:3)

bindActionCreators - 将创建一个动作对象,每个动作都包含在发送中 将它们作为参考传递给那些不了解reduxdispatch的非连接组件是很好的。
引自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.