Оберните вашу библиотеку в функцию конфигурации, которая требует от пользователя предоставить селектор , который указывает на положение в состоянии, в котором находится ваш редуктор.
Кроме того, если пользователи получают доступваше состояние (не для вас сейчас), вы можете предоставить селекторы для использования состояния, не зная его структуру.
Общий нерабочий пример:
const createSelectors = (mainSelector) => ({
selectorA: (state) => mainSelector(state).dataA,
selectorB: (state) => mainSelector(state).dataB,
});
const createMiddlewares = (actionTypes, selectors) => {
const middlewareA = ({ getState, dispatch }) =>
next => action => {
const myStateA = selectors.selectorA(getState());
};
return {
middlewareA
};
};
const factory = (mainSelector = ({ myState }) => myState) => {
const actionTypes = {};
const actions = {};
const reducer = () => {};
const selectors = createSelectors(mainSelector);
const middleware = createMiddlewares(actionTypes, selectors);
return {
actionTypes,
actions,
reducer,
middleware,
selectors
};
};