代码之家  ›  专栏  ›  技术社区  ›  Stav Alfi

Redux减速机的替代品

  •  2
  • Stav Alfi  · 技术社区  · 7 年前

    我正在建立一个其他应用程序将使用的库。我的图书馆是redux的扩展。

    为了使这个问题尽可能一般化,我目前有中间件,动作创造者和一个减速机。

    减速机是个问题,因为我的减速机依赖于 一、 作为图书馆开发人员,不能也不应该知道 . 用户可以使用 组合传感器 函数或其他函数,并给我的还原器的状态起任何他想要的名字。

    我的问题是-什么选择雷德克斯.js在这种情况下,库提供给库开发人员;隐藏还原器/还原器的其他替代品?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ori Drori    7 年前

    将库包装在配置函数中,该函数要求用户提供 selector ,它指向减速器所处的状态。

    此外,如果用户访问您的状态(现在不是这样),您可以提供选择器来使用该状态,而不必知道它的结构。

    一般非工作示例:

    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
      };
    };
    
        2
  •  0
  •   Jovan Tomasevic    6 年前

    这个包最小化了对写减速机的需求,因为它使用了带有操作的自动合并功能。对于数组也有一些解决方案。 https://www.npmjs.com/package/micro-reducers