Javascript 在redux中嵌套/组合组合减速器?

Javascript 在redux中嵌套/组合组合减速器?,javascript,typescript,react-native,redux,Javascript,Typescript,React Native,Redux,例如,如何组合组合减速器 export const streamsRootReducer = combineReducers({ streamsPending: streamsPendingReducer, streams: streamsReducer, streamsError: streamsErrorReducer, streamsPageOffset: streamsPageOffsetReducer, streamsRefresh: strea

例如,如何组合组合减速器

export const streamsRootReducer = combineReducers({
    streamsPending: streamsPendingReducer,
    streams: streamsReducer,
    streamsError: streamsErrorReducer,
    streamsPageOffset: streamsPageOffsetReducer,
    streamsRefresh: streamsRefreshReducer
}); 

export const newsRootReducer = combineReducers({
    newsPending: newsPendingReducer,
    news: newsReducer,
    newsError: newsErrorReducer,
    newsRefresh: newsRefreshReducer
})

export const rootReducer = combineReducers({
    streamsRootReducer: streamsRootReducer,
    newsRootReducer: newsRootReducer
})

export type StreamsRootState = ReturnType<typeof streamsRootReducer>;
export type NewsRootState = ReturnType<typeof newsRootReducer>;
在我的屏幕上,我想这样做:

import { rootReducer } from '../reducers/index';


const sagaMiddleware = createSagaMiddleware();
const middlewares = [sagaMiddleware, reduxLogger];

const configureStore = () => {
    const store = createStore(
        rootReducer,
        compose(applyMiddleware(...middlewares))
    );
    sagaMiddleware.run(rootSaga);
    return store;
}

export default configureStore;
...
const mapStateToProps = (state: NewsRootState) => ({
    newsPending: state.newsPending,
    news: state.news,
    newsError: state.newsError,
    newsRefresh: state.newsRefresh
})

export default connect(
    mapStateToProps,
    { fetchNewsPending, fetchNewsRefresh }
)(NewsScreen)

如果我尝试合并已经合并的减缩器,我会出错,但是将我所有的减缩器嵌套在一个合并的减缩器中看起来像是一团糟,因为我想在我的项目结束时做类似的2个合并的减缩器,我可能会有15-20个减缩器,我应该将所有的减缩器放在一个根减缩器中,还是可以像我的示例中那样嵌套它们?是否存在更好的解决方案来完成我想要的事情?

从外观上看,在您最终使用的示例中

export const rootReducer = 
combineReducers({
    streamsRootReducer: streamsRootReducer,
    newsRootReducer: newsRootReducer
})
。。。它实际上只是把所有的减速器组合在一起

所以,我认为不需要多级联合收割机。您可以简单地通过以下方式获得相同的结果:

// imports here... then...

export const rootReducer = combineReducers({
    streamsPending: streamsPendingReducer,
    streams: streamsReducer,
    streamsError: streamsErrorReducer,
    streamsPageOffset: streamsPageOffsetReducer,
    streamsRefresh: streamsRefreshReducer,
    newsPending: newsPendingReducer,
    news: newsReducer,
    newsError: newsErrorReducer,
    newsRefresh: newsRefreshReducer
})

export type RootState = ReturnType<typeof rootReducer>
//在此处导入。。。然后。。。
export const rootReducer=combinereducer({
流线支出:流线支出减速机,
溪流:溪流减速器,
streamsError:streamsErrorReducer,
streamsPageOffset:streamsPageOffsetReducer,
streamsRefresh:streamsRefresh减速器,
newsPending:newsPendingReducer,
新闻:新闻减速器,
newsError:newsErrorReducer,
newsRefresh:newsRefreshReducer
})
导出类型RootState=ReturnType

这行得通吗?

Q:你想要拆分缩减器的目的/想法是什么?这正是我所做的,但我希望代码看起来更好。。。我会有更多这样的代码,最后我会在其中放入大约100行减缩器。我会有像图像、视频、其他新闻类型,每个组件都会有挂起的/data/error/page/refresh reducer,我只是想要一些语法糖:)