Javascript Redux减速机的替代方案

Javascript Redux减速机的替代方案,javascript,redux,Javascript,Redux,我正在构建一个其他应用程序将使用的库。我的库是redux的扩展 为了使这个问题尽可能的笼统,我现在有了中间件、动作创建者和一个减速机 reducer是个问题,因为我的reducer依赖于状态结构,而作为库开发人员,我不能也不应该知道状态结构。用户可以使用combineReducers函数或其他函数,并根据需要为我的reducer状态命名 我的问题是——在这种情况下,Redux.js库为库开发人员提供了哪些选项;隐藏减缩器/减缩器的其他替代品?将库包装在配置函数中,该函数要求用户提供一个指向减缩器

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

为了使这个问题尽可能的笼统,我现在有了中间件、动作创建者和一个减速机

reducer是个问题,因为我的reducer依赖于状态结构,而作为库开发人员,我不能也不应该知道状态结构。用户可以使用combineReducers函数或其他函数,并根据需要为我的reducer状态命名


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

将库包装在配置函数中,该函数要求用户提供一个指向减缩器所处状态的

此外,如果用户访问您的状态(您目前的情况并非如此),您可以提供选择器来使用该状态,而不必知道它的结构

一个通用的非工作示例:

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

这个包最大限度地减少了编写减缩器的需要,因为它使用了带有操作的自动合并功能。阵列也有一些解决方案。

我认为与其与复杂的Redux库抗争,不如与之抗争。您应该尝试一下redux的替代方案。从字面上看,它就像一条小道。

你的图书馆做什么?组件是否需要说明您的减速机生产的状态,或者只是中间产品?目前,我看不出我的消费者有理由使用我的减速机生产的状态。但是,他们会在他们的减速器中使用我发送给我的减速器的操作。我不能给出关于我的库在这一点上会做什么的详细信息。我还没有开发图书馆的经验,所以我可能无法提供您需要的信息来帮助我。请告诉我,如果有什么通用的我可以告诉。为什么你需要一个状态和减缩器?用户给我的函数执行之前,他创建他的redux存储,我需要跟踪我执行的功能,以何种顺序,取消,失败,下一步调用什么函数,什么时候等等。。。这只是我工作的一小部分,非常好。这可能是保持减速器的唯一解决方案。我将等待更多的答案,直到接受你的答案。希望用户不会以任何方式参与其中。无论如何,谢谢,这真的很好:)我相信这不是唯一的办法。您还可以通过单例配置选择器,让用户将reducer放置在您选择的位置,或跳过reducer状态,并在中间件中管理内部状态。我考虑了您的上一个选项,这很好,但如果用户使用存储增强程序保存其状态,例如,他也不会拯救我的内部状态。如果你的状态应该是redux生态系统的一部分,你需要一个减速器。