From 641ca2dcca0de3be6f01e446bc7ac827ee31ffaf Mon Sep 17 00:00:00 2001 From: katherinehhh Date: Tue, 26 Dec 2023 10:43:12 +0800 Subject: [PATCH] fix: useParseDefaultValue (#3264) --- .../form-item/hooks/useParseDefaultValue.ts | 32 ++++++++++++------- .../client/src/schema-initializer/index.ts | 2 +- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/packages/core/client/src/schema-component/antd/form-item/hooks/useParseDefaultValue.ts b/packages/core/client/src/schema-component/antd/form-item/hooks/useParseDefaultValue.ts index b995e4854..14551be2e 100644 --- a/packages/core/client/src/schema-component/antd/form-item/hooks/useParseDefaultValue.ts +++ b/packages/core/client/src/schema-component/antd/form-item/hooks/useParseDefaultValue.ts @@ -115,19 +115,27 @@ const useParseDefaultValue = () => { _run(); // 实现联动的效果,当依赖的变量变化时(如 `$nForm` 变量),重新解析默认值 - const dispose = reaction(() => { - const obj = { [variableName]: variable?.ctx || {} }; - const path = getPath(fieldSchema.default); - const value = getValuesByPath(obj, path); + const dispose = reaction( + () => { + const obj = { [variableName]: variable?.ctx || {} }; + const path = getPath(fieldSchema.default); + const value = getValuesByPath(obj, path); + // fix https://nocobase.height.app/T-2212 + if (value === undefined) { + // 返回一个随机值,确保能触发 run 函数 + return Math.random(); + } - // fix https://nocobase.height.app/T-2212 - if (value === undefined) { - // 返回一个随机值,确保能触发 run 函数 - return Math.random(); - } - - return value; - }, run); + return value; + }, + _run, + { + equals: (oldValue, newValue) => { + field.setValue(newValue); + return oldValue === newValue; + }, + }, + ); return dispose; } diff --git a/packages/core/client/src/schema-initializer/index.ts b/packages/core/client/src/schema-initializer/index.ts index 24c718d9e..da7a8ce3f 100644 --- a/packages/core/client/src/schema-initializer/index.ts +++ b/packages/core/client/src/schema-initializer/index.ts @@ -49,7 +49,7 @@ export { useInheritsTableColumnInitializerFields, useRecordCollectionDataSourceItems, useRemoveGridFormItem, - useTableColumnInitializerFields + useTableColumnInitializerFields, } from './utils'; export class SchemaInitializerPlugin extends Plugin {