我正在开发一个本机/ redux应用程序,它包含一些我可以使用 combineReducers()合并的Reducer文件。为了管理代码并保持其可维护性,这些文件还包含 mapDispatchToProps 条目(之所以这样做,是因为调度功能与Reducers密切相关),例如:
export const counterMapDispatchToProps = dispatch => {
return {
increment: () => dispatch({ type: 'INCREMENT' }),
decrement: () => dispatch({ type: 'DECREMENT' }),
}
}
和
export const statusMapDispatchToProps = dispatch => {
return {
setStatus: (text) => dispatch({ type: 'SET_STATUS', status: text }),
}
}
如果可能的话,我想获取这些mapDispatchToProps的输出并合并它们,以便获得一个产生以下内容的函数,然后可以在连接到我的Redux存储区时使用它:
export const appMapDispatchToProps = dispatch => {
return {
increment: () => dispatch({ type: 'INCREMENT' }),
decrement: () => dispatch({ type: 'DECREMENT' }),
setStatus: (text) => dispatch({ type: 'SET_STATUS', status: text }),
}
}
我想我的问题实际上归结为:我该如何编写 combineMapDispatchToProps({counterMapDispatchToProps,statusMapDispatchToProps,...})函数?
答案 0 :(得分:2)
由于这些函数仅返回一个对象(然后由Consumer HOC处理),因此可以使用ES6扩展-
export const appMapDispatchToProps = dispatch => {
return {
...counterMapDispatchToProps(dispatch),
...statusMapDispatchToProps(dispatch),
}
}
您可以为此添加更多功能,当然也可以从其他文件导入它们。
如果需要ES5,可以使用Object.assign达到类似效果:
export const appMapDispatchToProps = function(dispatch) {
return Object.assign(counterMapDispatchToProps(dispatch), statusMapDispatchToProps(dispatch));
}