Redux 向减速器工厂实例添加专用功能
为了减少我的应用程序中与redux相关的部分中的代码重复,我提出了reducer工厂,以便将重复逻辑分组成一个抽象的reducer,然后通过向工厂传递Redux 向减速器工厂实例添加专用功能,redux,factory,Redux,Factory,为了减少我的应用程序中与redux相关的部分中的代码重复,我提出了reducer工厂,以便将重复逻辑分组成一个抽象的reducer,然后通过向工厂传递nameparam将其转换为具体的reducer实例 ReduxFactory/reducer.js const initialState = { foo: null } function reducerFactory(name = '') { return function reducer(state = initialStat
name
param将其转换为具体的reducer实例
ReduxFactory/reducer.js
const initialState = {
foo: null
}
function reducerFactory(name = '') {
return function reducer(state = initialState, action) {
switch (action.type) {
case `${name}_DO_SOMETHING`: {
return state
}
default:
return state;
}
}
}
export default reducerFactory;
然后,我为两个模块构建了减速器工厂的实例:
fileA.js
import reducerFactory from './ReduxFactory/reducer'
const reducer = reducerFactory('OBJECT_A')
fileB.js
import reducerFactory from './ReduxFactory/reducer'
const reducer = reducerFactory('OBJECT_B')
现在想象一下,在类型B的对象上,我需要实现一些特殊的功能,我不想将这些功能包含在通用的reducer factory主体中,因为它太专业化了。是否有任何有效的JS代码模式来实现此功能?如果我理解正确,我认为您可以执行以下操作:
function reducerFactory(name = '', extras = (x) => x) {
return function reducer(state = initialState, action) {
switch (action.type) {
case `${name}_DO_SOMETHING`: {
return state;
}
default:
return extras(state, action);
}
};
}
const reducer = reducerFactory(
'OBJECT_B',
(state, action) => {
if (action.type === 'extra') {
//return changed state
}
return state;
}
);