Альтернатива редуктору Redux - PullRequest
0 голосов
/ 17 ноября 2018

Я создаю библиотеку, которую будут использовать другие приложения. Моя библиотека является расширением до редукса.

Чтобы этот вопрос был как можно более общим, в настоящее время у меня есть промежуточное программное обеспечение, создатели действий и один редуктор.

Проблема заключается в том, что мой редуктор зависит от структуры состояний, которую Я, как разработчик библиотеки, не могу и не должен знать . Пользователь может использовать функцию CombineReducers или другую функцию и присвоить состоянию моего редуктора любое имя, которое он хочет.

У меня вопрос: какие опции предоставляет библиотека Redux.js разработчикам библиотеки в таком случае; скрытие редукторов / другие альтернативы редукторам?

1 Ответ

0 голосов
/ 17 ноября 2018

Оберните вашу библиотеку в функцию конфигурации, которая требует от пользователя предоставить селектор , который указывает на положение в состоянии, в котором находится ваш редуктор.

Кроме того, если пользователи получают доступваше состояние (не для вас сейчас), вы можете предоставить селекторы для использования состояния, не зная его структуру.

Общий нерабочий пример:

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
  };
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...