From 3ae8dd2a825483ce530abbf57a24cfb6fa99fa29 Mon Sep 17 00:00:00 2001 From: saller Date: Sat, 7 Oct 2023 15:38:41 +0800 Subject: [PATCH] fix(pro:search): key duplication after controlled value change (#1708) --- .../search/src/composables/useSearchStates.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/pro/search/src/composables/useSearchStates.ts b/packages/pro/search/src/composables/useSearchStates.ts index 56181126d..99dbed69b 100644 --- a/packages/pro/search/src/composables/useSearchStates.ts +++ b/packages/pro/search/src/composables/useSearchStates.ts @@ -244,10 +244,18 @@ export function useSearchStates( const createdStates = getMarks() .map(({ key, mark }) => mark === 'created' && getSearchStateByKey(key)) .filter(Boolean) - .map((state, index) => ({ - ...state, - index: lastIndex + index + 1, - })) as SearchState[] + .map((state, index) => { + // recreate the state key again to avoid key duplication + const fieldKey = (state as SearchState).fieldKey + const count = dataKeyCountMap.has(fieldKey) ? dataKeyCountMap.get(fieldKey)! : 0 + const key = getKey(fieldKey, count) + + return { + ...state, + key, + index: lastIndex + index + 1, + } + }) as SearchState[] searchStates.value = [...newSearchStates, ...createdStates] }