与 mapDispatchToProps 相比,注入 actionCreators 有什么好处?
What's the benefit of injecting actionCreators versus a mapDispatchToProps?
我正在浏览 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
? dispatch
在哪里?
我理解操作,dispatch
,和 mapDispatchToProps
,但我对 Action Creators 和上面的语法有点模糊。
您可以通过 Object
或 Function
:
如果传递了一个对象,其中的每个函数都被假定为一个 Redux 动作创建者。 Connect
将为您将动作创作者绑定到 dispatch
。
import * as actionCreators from './actionCreators';
connect(mapStateToProps, actionCreators)(TodoApp)
然后在组件
this.props.someActionCreator();
如果一个函数被传递,它将被调度。 return 一个以某种方式使用 dispatch 以您自己的方式绑定动作创建者的对象取决于您。你可以使用 Redux 的 bindActionCreators()
助手。
如果将 ownProps
指定为第二个参数,它的值将是传递给组件的道具,并且只要组件收到新道具,就会重新调用 mapDispatchToProps
。
function mapDispatchToProps(dispatch) {
return { actions: bindActionCreators(actionCreators, dispatch) }
}
如果省略它,默认实现只是将 dispatch 注入组件的 props。
然后在组件中:
this.props.dispatch(someActionCreator());
因此,通过函数注入actionCreators的对象的好处,是将actionCrators传递给component
更方便和简洁的形式
我正在浏览 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
? dispatch
在哪里?
我理解操作,dispatch
,和 mapDispatchToProps
,但我对 Action Creators 和上面的语法有点模糊。
您可以通过 Object
或 Function
:
如果传递了一个对象,其中的每个函数都被假定为一个 Redux 动作创建者。 Connect
将为您将动作创作者绑定到 dispatch
。
import * as actionCreators from './actionCreators';
connect(mapStateToProps, actionCreators)(TodoApp)
然后在组件
this.props.someActionCreator();
如果一个函数被传递,它将被调度。 return 一个以某种方式使用 dispatch 以您自己的方式绑定动作创建者的对象取决于您。你可以使用 Redux 的 bindActionCreators()
助手。
如果将 ownProps
指定为第二个参数,它的值将是传递给组件的道具,并且只要组件收到新道具,就会重新调用 mapDispatchToProps
。
function mapDispatchToProps(dispatch) {
return { actions: bindActionCreators(actionCreators, dispatch) }
}
如果省略它,默认实现只是将 dispatch 注入组件的 props。
然后在组件中:
this.props.dispatch(someActionCreator());
因此,通过函数注入actionCreators的对象的好处,是将actionCrators传递给component
更方便和简洁的形式