From 07ec766ef4686a4672e8a31e1a71246e9431f42a Mon Sep 17 00:00:00 2001 From: JBBianchi Date: Wed, 12 Jul 2023 15:03:02 +0200 Subject: [PATCH] feat: remove state slice when set as undefined Related to #1790 --- packages/core/src/reducers/core.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/core/src/reducers/core.ts b/packages/core/src/reducers/core.ts index 203c38d69..03176cb13 100644 --- a/packages/core/src/reducers/core.ts +++ b/packages/core/src/reducers/core.ts @@ -25,6 +25,7 @@ import cloneDeep from 'lodash/cloneDeep'; import setFp from 'lodash/fp/set'; +import unsetFp from 'lodash/fp/unset'; import get from 'lodash/get'; import filter from 'lodash/filter'; import isEqual from 'lodash/isEqual'; @@ -285,11 +286,17 @@ export const coreReducer: Reducer = ( } else { const oldData: any = get(state.data, action.path); const newData = action.updater(cloneDeep(oldData)); - const newState: any = setFp( - action.path, - newData, - state.data === undefined ? {} : state.data - ); + let newState: any + if (newData !== undefined) { + newState = setFp( + action.path, + newData, + state.data === undefined ? {} : state.data + ); + } + else { + newState = unsetFp(action.path, state.data === undefined ? {} : state.data); + } const errors = validate(state.validator, newState); return { ...state,