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