Я думаю, что есть еще один способ сделать это.
Я предпочитаю использовать комбинированные редукторы.
В вашем дочернем приложении создайте какой-нибудь редуктор:
import {ACTIONS} from './actions';
const defaultState = {
counter: 0,
};
export default function(state = defaultState, action) {
switch (action.type) {
case ACTIONS.PLUS:
let newState = {...state};
newState.counter++;
return newState;
case ACTIONS.MINUS:
let newState2 = {...state};
newState2.counter--;
return newState2;
default:
return state;
}
};
Экспорт этого редуктора из проекта:
export {default as YourReducer} from './your-reducer'
;
Теперь в родительском корневом редукторе объедините этот редуктор:
import {combineReducers} from 'redux'
import app from 'app/containers/app/app-reducer'
import {YourReducer} from '@this-is-your-package/YourReducer'
export default combineReducers({
app,
YourReducer,
})
Итак, все, теперь вы можете использовать connect
, mapStateToProps
, dispatchToProps
и т. Д. ... у вашего ребенка.
Вы также можете прочитать родительское хранилище состояний ..
Родительский магазин выглядит так:
app: { ... } // <-- parent
YourReducer: { ... } // <-- your child