首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Redux -如何组合多个mapDispatchToProps?

Redux -如何组合多个mapDispatchToProps?
EN

Stack Overflow用户
提问于 2019-06-09 22:12:49
回答 1查看 423关注 0票数 1

我正在开发一个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,...})函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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));
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56515304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档