Reactjs 如何在redux上正确实现mapDispatchToProps?
我看到了两种实现mapDispatchToProps的方法 第一种方式:Reactjs 如何在redux上正确实现mapDispatchToProps?,reactjs,redux,Reactjs,Redux,我看到了两种实现mapDispatchToProps的方法 第一种方式: function mapDispatchToProps(dispatch) { return { actionMapped: bindActionCreators(courseActions, dispatch) }; } 第二种方式: function mapDispatchToProps(dispatch) { return { actionMapped: () => dispatch( courseA
function mapDispatchToProps(dispatch) {
return { actionMapped: bindActionCreators(courseActions, dispatch) };
}
第二种方式:
function mapDispatchToProps(dispatch) {
return { actionMapped: () => dispatch( courseActions() )};
}
哪一个更有效?是否有任何场景我应该使用特定的场景?其中一种是推荐的吗?在连接Redux组件时,有几种有效的方法可以绑定动作创建者。以下是一些例子:
import {action1, action2} from "myActions";
import {bindActionCreators} from "redux";
const mapDispatchToProps(dispatch) => {
return {
manuallyBoundAction : (...args) => dispatch(action1(...args)),
autoBoundAction : bindActionCreators(action2, dispatch),
multipleActionsTogether : bindActionCreators({action1, action2}, dispatch)
}
};
const MyComponent = (props) => {
return (
<div>
<button onClick={props.manuallyBoundAction}>Run First Action</button>
<button onClick={props.autoBoundAction}>Run Second Action</button>
<button onClick={props.multipleActionsTogether.action1}>Run Third Action</button>
<button onClick={props.multipleActionsTogether.action2}>Run Fourth Action</button>
</div>
)
}
export default connect(null, mapDispatchToProps)(MyComponent);
// or, you can use the "object shorthand" for mapDispatch:
export default connect(null, {action1, action2})(SomeOtherComponent)
所有这些最终都会产生一些函数,这些函数包装动作创建者,并在调用时自动将其返回值传递给dispatch
我个人建议使用对象速记法。对我来说,手工编写实际的mapDispatch函数从来都不是一个好理由。如果courseActions是一个操作对象,那么只需将操作对象作为mapDispatchToProps参数传递给:
如果传递了一个对象,则假定其中的每个函数都是
Redux操作创建者。具有相同函数名但具有
每个action creator都打包到一个分派调用中,以便
直接调用,将合并到组件的道具中
例如:
connect(mapStateToProps, courseActions)
执行相同的操作,但您需要显式地传递dipsatch:
const mapDispatchToProps =(dispatch) =>
bindActionCreators(courseActions, dispatch)