diff --git a/README.md b/README.md index 6c7a15d..de09571 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ import { createAction, handleAction, reduceReducers } from 'redux-ts-utils'; const increment = createAction('increment'); const decrement = createAction('decrement'); const add = createAction('add'); +const override = createAction('override'); // Reducer @@ -45,6 +46,9 @@ const reducer = reduceReducers([ handleAction(add, (state, { payload }) => { state.counter += payload; }), + handleAction(override, (_, { payload }) => ({ + counter: payload, + })), ], initialState); // Store @@ -142,6 +146,9 @@ object. [`immer`] will also provide you with a mapped type (`Draft`) of your state with all `readonly` modifiers removed (it will also remove `Readonly` mapped types and convert `ReadonlyArray`s to standard arrays). +If your mutation function returns a value other than `undefined`, and does not mutate the +incoming state object, that return value will become the new state instead. + ### `reduceReducers(reducers: Reducer[], initialState?: S)` The `reduceReducers` function takes an array of reducer functions and an diff --git a/src/example.ts b/src/example.ts index fc074a8..d56b24f 100644 --- a/src/example.ts +++ b/src/example.ts @@ -8,6 +8,7 @@ import { createAction, handleAction, reduceReducers } from '.'; const increment = createAction('increment'); const decrement = createAction('decrement'); const add = createAction('add'); +const override = createAction('override'); // Reducer @@ -29,6 +30,9 @@ const reducer = reduceReducers([ handleAction(add, (state, { payload }) => { state.counter += payload; }), + handleAction(override, (_, { payload }) => ({ + counter: payload, + })), ], initialState); // Store