我正在构建其他应用程序将使用的库。我的库是 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/