我正在开发一个react-native / redux应用程序,它包含一些Reducer文件,我可以使用combineReducers()组合这些文件。为了管理代码并保持代码的可维护性,这些文件还包含mapDispatchToProps条目(我这样做是因为调度函数与Reducer密切相关),如下所示:
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,...})函数?
发布于 2019-06-09 22:46:59
由于这些函数只返回一个对象(然后由消费者自组织处理),因此可以使用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));
}
https://stackoverflow.com/questions/56515304
复制相似问题