在javascript for Redux中包装容器方法的优雅方式
使用所有相关方法创建单独文件*后,我的mapDispatchToProps方法是:在javascript for Redux中包装容器方法的优雅方式,javascript,ecmascript-6,redux,react-redux,Javascript,Ecmascript 6,Redux,React Redux,使用所有相关方法创建单独文件*后,我的mapDispatchToProps方法是: const mapDispatchToProps = (dispatch, ownProps) => { return { toggleTreeMode: () => {dispatch(editor_thunks.toggleTreeMode());}, toggleDrawer: (e) => {dispat
const mapDispatchToProps = (dispatch, ownProps) => {
return {
toggleTreeMode: () => {dispatch(editor_thunks.toggleTreeMode());},
toggleDrawer: (e) => {dispatch(editor_thunks.toggleDrawer(e));},
toggleDataButtons: (on) => {dispatch(editor_thunks.toggleDataButtons(on));},
//... many more methods
}
签名都是一样的,所以感觉ES6中一定有更好的方法来包装它。有吗
这不起作用,因为我需要调度:
const mapDispatchToProps = (dispatch, ownProps) => {
return editor_thunks;
}
*大多数方法都需要状态,因此感觉它是最佳解决方案您可以使用
mapDispatchToProps()
速记法。参数mapDispatchToProps
可以是配置对象,而不是函数。根据报告:
[mapDispatchToProps(dispatch,[ownProps]):dispatchProps](对象或函数):如果传递了一个对象,则其中的每个函数都是
假设是Redux操作创建者。具有相同功能的对象
名字,但每一个动作的创建者都被包装在一个分派调用中
它们可以直接调用,将合并到组件的
道具
这意味着,如果只需要使用dispatch包装所有操作,则可以传递method的对象,并且对象中的每个方法都将自动包装在dispatch
中
如果您需要编辑的一些操作_thunks
const { toggleTreeMode, toggleDrawer, toggleDataButtons } = editor_thunks;
connect(mapStateToProps, { toggleTreeMode, toggleDrawer, toggleDataButtons })(Component);
connect(mapStateToProps, editor_thunks)(Component);
如果需要编辑器的所有操作
const { toggleTreeMode, toggleDrawer, toggleDataButtons } = editor_thunks;
connect(mapStateToProps, { toggleTreeMode, toggleDrawer, toggleDataButtons })(Component);
connect(mapStateToProps, editor_thunks)(Component);
最好使用
bindactioncreators
()来避免在容器的映射分派函数中复制粘贴代码。