javascript - 与注入(inject) mapDispatchToProps 相比,注入(inject) actionCreators 有什么好处?

标签 javascript reactjs redux react-redux

我正在浏览 connect docs并尝试理解这个例子:

Inject todos and all action creators

import * as actionCreators from './actionCreators'

function mapStateToProps(state) {
  return { todos: state.todos }
}

export default connect(mapStateToProps, actionCreators)(TodoApp)

为什么这里不需要mapDispatchToProps调度在哪里?

我了解操作、dispatchmapDispatchToProps,但我对 Action Creators 和上述语法有点模糊。

最佳答案

您可以通过ObjectFunction :

如果传递一个对象,则其中的每个函数都被假定为 Redux 操作创建者。 Connect将把 Action 创建者绑定(bind)到 dispatch为你。

import * as actionCreators from './actionCreators';

connect(mapStateToProps, actionCreators)(TodoApp)

然后在组件中

this.props.someActionCreator();

如果传递了一个函数,它将被调度。您可以返回一个对象,该对象以某种方式使用分派(dispatch)以您自己的方式绑定(bind) Action 创建者。您可以使用bindActionCreators() Redux 的助手。 如果ownProps被指定为第二个参数,它的值将是传递给您的组件的 props,并且 mapDispatchToProps每当组件收到新的 props 时就会重新调用。

function mapDispatchToProps(dispatch) {
  return { actions: bindActionCreators(actionCreators, dispatch) }
}

如果省略它,默认实现只会将调度注入(inject)到组件的 props 中。

然后在组件中:

this.props.dispatch(someActionCreator());

source react-redux DOCS

因此,通过函数注入(inject)actionCreators对象的好处是,将actionCrators传递给组件的形式更加方便和简洁

关于javascript - 与注入(inject) mapDispatchToProps 相比,注入(inject) actionCreators 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42895789/

相关文章:

reactjs - onClick 未在 React.js 输入单选按钮上触发

reactjs - Redux - reducer 与 Action 的关系

reactjs - 我如何循环 React bootstrap 轮播项目

javascript - 组件渲染过早

javascript - 如何将 _app.js 包装在多个提供者中?

javascript - 为什么相同的javascript可以使用runscript命令运行,但不能在RC中的getEval中运行

javascript - 如何获取应用程序的 url?

javascript - ajax加载后无法刷新某一特定div(MVC系统)

javascript - Cesiumjs 缩放到鼠标

javascript - FirebaseError : Function addDoc() called with invalid data. 不支持的字段值:未定义