redux-optimistic-ui icon indicating copy to clipboard operation
redux-optimistic-ui copied to clipboard

Multiple optimistic reducers: only react to your own actions

Open Buggytheclown opened this issue 3 years ago • 0 comments

Feature request, i think it's important because:

  • optimization - we can skip some work
  • DX improvements - easy to debug optimistic slice, history have only valuable for the slice actions

I want to use multiple optimistic slices:

  • module isolation, code splitting: each module should work as isolated feature, we should be able to add it via 'lazy route' + 'replaceReducer'
  • optimization: don't want to store all actions (if we already have any BEGIN action), some payload may be to heavy

For example, if i use multiple 'optimistic' slices, i want each 'optimistic' enhancer react only on own actions:

const enhancedRootReducerNested = combineReducers({
  counter1: optimistic(counterReducer1), // 'INC_1'
  counter2: optimistic(counterReducer2), // 'INC_2'
})

test('only react on own BEGIN', t => {
  const begin0 = makeAction('INC_2', BEGIN, 0);
  const state1 = enhancedRootReducerNested(undefined, begin0);

  const expected = {
    counter1: {
      beforeState: undefined,
      history: [],
      current: 0
    },
    counter2: {
      beforeState: 0,
      history: [begin0],
      current: 1
    },
  };
  t.deepEqual(state1, expected);
});

Can be related with https://github.com/mattkrick/redux-optimistic-ui/issues/54

Buggytheclown avatar Apr 04 '21 13:04 Buggytheclown