Redux code splitting
Before
Partner / App / Pages / ClientsList / reducer.js

After
Partner / App / Pages / ClientsList / reducer.js

Before
Partner / App / Pages / ClientsList / saga.js

After
Partner / App / Pages / ClientsList / saga.js
Before
Partner / App / Pages / ClientsList / index.js
export default createPageComponentWithRouter(ClientsListRoot, rootReducer, partnerSagasWrapper(clientListRootSaga));After
Partner / App / Pages / ClientsList / index.js
export default createPageComponentWithRouter(ClientsListRoot, rootReducers);New boi
Partner / App / Components / Client / Container.jsx
New boi
Partner / App / Components / Client / Container.jsx
export const ClientContainer = (props) => {
const reducersInjected = useInjectableReducers({
client: clientReducer,
clientPage: clientPageReducer,
clientHtmlBlocks: clientHtmlBlocksReducer,
clientMainBlock: clientMainBlockReducer,
clientBillsList: clientBillsListReducer,
clientManagersList: clientManagersListReducer,
clientSales: clientSalesReducer,
clientContactsAndRelations: clientContactsAndRelationsReducer
});
const sagasInjected = useInjectableSagas([
clientRootSagas,
clientInfoSagas,
clientBillsListSagas,
clientSalesSagas,
contactsAndRelationsRootSaga,
clientManagersListSagas
]);
if (!reducersInjected || !sagasInjected) {
return null;
}
return <ClientWrapper {...props} />;
};New boi
Partner / App / Components / Client / Container.jsx
export const ClientContainer = (props) => {
const reducersInjected = useInjectableReducers({
client: clientReducer,
clientPage: clientPageReducer,
clientHtmlBlocks: clientHtmlBlocksReducer,
clientMainBlock: clientMainBlockReducer,
clientBillsList: clientBillsListReducer,
clientManagersList: clientManagersListReducer,
clientSales: clientSalesReducer,
clientContactsAndRelations: clientContactsAndRelationsReducer
});
const sagasInjected = useInjectableSagas([
clientRootSagas,
clientInfoSagas,
clientBillsListSagas,
clientSalesSagas,
contactsAndRelationsRootSaga,
clientManagersListSagas
]);
if (!reducersInjected || !sagasInjected) {
return null;
}
return <ClientWrapper {...props} />;
};New boi
Partner / App / Components / Client / Container.jsx
export const ClientContainer = (props) => {
const reducersInjected = useInjectableReducers({
client: clientReducer,
clientPage: clientPageReducer,
clientHtmlBlocks: clientHtmlBlocksReducer,
clientMainBlock: clientMainBlockReducer,
clientBillsList: clientBillsListReducer,
clientManagersList: clientManagersListReducer,
clientSales: clientSalesReducer,
clientContactsAndRelations: clientContactsAndRelationsReducer
});
const sagasInjected = useInjectableSagas([
clientRootSagas,
clientInfoSagas,
clientBillsListSagas,
clientSalesSagas,
contactsAndRelationsRootSaga,
clientManagersListSagas
]);
if (!reducersInjected || !sagasInjected) {
return null;
}
return <ClientWrapper {...props} />;
};Loadable
+++
- Явное разделение на модули
- Code splitting
- Нет (или почти) упячных прослоек rootSaga, rootReducer
- Сложнее воткнуть модуль в сторе не пойми куда
???
- Что подключать сразу, а что потом?
- Неконсистентность подхода (есть общие штуки вроде componentsMetaInfo, сейчас по-разному все модули подключаются)
- Дебаггинг


Redux code splitting
By shimmy
Redux code splitting
- 729