我有一个createSnapshot reducer,它将在状态发生变化时存储切片的一部分的快照。我有30多个用于切片的reducer。除了在每个reducer的末尾添加caseReducers.createSnapshot之外,是否有一种更干净的方法来实现这一点,比如中间件reducer?
q35jwt9p1#
你可以创建一个高阶的reducer,它是一个函数,将一个reducer作为参数,并返回一个新的reducer,例如(未测试):
const withSnapshot = reducer => (state, action) => { // Call the original reducer const tmpState = reducer(state, action); // Create the snapshot const finalState = createSnapshot(tmpState); // Return the state return finalState; }
然后在configureStore中执行以下操作:
configureStore
mySlice: withSnapshot(mySliceReducer),
iszxjhcz2#
.addMatcher允许侦听多个化简器输入
extraReducers(builder) { builder .addMatcher(isAnyOf(reducer1, reducer2),(state,action)=>{ // Do something }) }
2条答案
按热度按时间q35jwt9p1#
你可以创建一个高阶的reducer,它是一个函数,将一个reducer作为参数,并返回一个新的reducer,例如(未测试):
然后在
configureStore
中执行以下操作:iszxjhcz2#
.addMatcher允许侦听多个化简器输入