javascript - Redux reducer 的替代品

标签 javascript redux

我正在构建其他应用程序将使用的库。我的库是 redux 的扩展。

为了让这个问题尽可能笼统,我目前有中间件、action creators 和一个 reducer。

reducer 是问题所在,因为我的 reducer 依赖于状态结构,作为库开发人员,我不能也不应该知道。用户可以使用 combineReducers 函数或其他函数,并为我的 reducer 的状态指定他想要的任何名称。

我的问题是——在这种情况下,Redux.js 库为库开发人员提供了哪些选项;隐藏 reducer / reducer 的其他替代品?

最佳答案

将您的库包装在一个配置函数中,这需要用户提供一个 selector , 指向 place 你的 reducer 所在的状态。

此外,如果用户访问您的状态(目前您不是这种情况),您可以提供选择器来使用状态,而无需了解它的结构。

一个一般的非工作示例:

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
  };
};

关于javascript - Redux reducer 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53353898/

相关文章:

javascript - 将表单中的所有输入收集到 JS 数组中

包含 html-template 时 Javascript 不执行

javascript - redux如何使用状态

android - React Native FlatList 没有呈现 Axios API 请求

javascript - 如何在使用 react(redux) 渲染之前设置状态

javascript - AngularJS:单选按钮不适用于 Bootstrap 3

javascript - 逻辑或问题

javascript - React.js : How to define a default property function?

reactjs - React 组件中的 JSX 将西里尔文文本显示为 habra-codabra

javascript - 如何从多个对象中查找字符串?