From 0f82b90225db74ac667bd66ce741c73fe07d2ad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E6=9D=89?= Date: Thu, 20 Feb 2025 17:31:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20fix=20duplicate=20field?= =?UTF-8?q?=20id=20when=20values=20are=20different?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/ReactionsSetter/index.tsx | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/formily/setters/src/components/ReactionsSetter/index.tsx b/formily/setters/src/components/ReactionsSetter/index.tsx index b4699fa02..8fe827363 100644 --- a/formily/setters/src/components/ReactionsSetter/index.tsx +++ b/formily/setters/src/components/ReactionsSetter/index.tsx @@ -285,14 +285,18 @@ export const ReactionsSetter: React.FC = (props) => { if (isVoidField(field)) return field.query('.source').take((source) => { if (isVoidField(source)) return - if ( - source.value && - !field.value && - !field.modified - ) { - field.value = - source.inputValues[1]?.props?.name || - `v_${uid()}` + const hasSourceValue = source.value; + const isFieldEmpty = !field.value && !field.modified; + + if (hasSourceValue && isFieldEmpty) { + const suggestedName = source.inputValues[1]?.props?.name; + const dependencies = field.form.values?.dependencies || []; + const nameExists = dependencies.some( + (dep: { name: string }) => dep.name === suggestedName + ); + + const fallbackName = `v_${uid()}`; + field.value = suggestedName && !nameExists ? suggestedName : fallbackName; } }) }}