From d21578ab3305ad00303a1b5365fadd38c6b43e7d Mon Sep 17 00:00:00 2001 From: Arvin <46149128+iconFehu@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:03:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E5=8D=95=E8=AE=BE=E7=BD=AE=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=80=BCdefaultValue=E6=97=B6=E5=80=99=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=B7=B1=E5=BA=A6=E6=8B=B7=E8=B4=9D=20(#1935)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: fix wrong naming * perf: 表单设置初始值defaultValue时候使用深度拷贝 * perf: 表单设置初始值defaultValue时候使用深度拷贝 * Revert "perf: 表单设置初始值defaultValue时候使用深度拷贝" This reverts commit a103cd11b4c8e4eeac3be114c103a5c30f562042. * perf: perf Tree Component * fix: 解决tree树形异步懒加载,点击两次才能关闭 Co-authored-by: yfh01 --- src/components/Form/src/BasicForm.vue | 7 +++++-- src/components/Form/src/hooks/useFormEvents.ts | 5 +++-- src/components/Form/src/hooks/useFormValues.ts | 4 ++-- src/components/Tree/index.ts | 4 ++-- .../Tree/src/{Tree.vue => BasicTree.vue} | 15 +++++++++++---- .../Tree/src/{ => components}/TreeHeader.vue | 2 +- src/components/Tree/src/{ => hooks}/useTree.ts | 2 +- src/components/Tree/src/{ => types}/tree.ts | 0 src/views/demo/tree/index.vue | 14 +++++++------- 9 files changed, 32 insertions(+), 21 deletions(-) rename src/components/Tree/src/{Tree.vue => BasicTree.vue} (97%) rename src/components/Tree/src/{ => components}/TreeHeader.vue (98%) rename src/components/Tree/src/{ => hooks}/useTree.ts (99%) rename src/components/Tree/src/{ => types}/tree.ts (100%) diff --git a/src/components/Form/src/BasicForm.vue b/src/components/Form/src/BasicForm.vue index 2ab4a693..d6416ee6 100644 --- a/src/components/Form/src/BasicForm.vue +++ b/src/components/Form/src/BasicForm.vue @@ -62,6 +62,7 @@ import { basicProps } from './props'; import { useDesign } from '/@/hooks/web/useDesign'; + import { cloneDeep } from 'lodash-es'; export default defineComponent({ name: 'BasicForm', @@ -132,9 +133,11 @@ } } if (unref(getProps).showAdvancedButton) { - return schemas.filter((schema) => schema.component !== 'Divider') as FormSchema[]; + return cloneDeep( + schemas.filter((schema) => schema.component !== 'Divider') as FormSchema[], + ); } else { - return schemas as FormSchema[]; + return cloneDeep(schemas as FormSchema[]); } }); diff --git a/src/components/Form/src/hooks/useFormEvents.ts b/src/components/Form/src/hooks/useFormEvents.ts index 96c9830b..30e9f87a 100644 --- a/src/components/Form/src/hooks/useFormEvents.ts +++ b/src/components/Form/src/hooks/useFormEvents.ts @@ -39,7 +39,8 @@ export function useFormEvents({ Object.keys(formModel).forEach((key) => { const schema = unref(getSchema).find((item) => item.field === key); const isInput = schema?.component && defaultValueComponents.includes(schema.component); - formModel[key] = isInput ? defaultValueRef.value[key] || '' : defaultValueRef.value[key]; + const defaultValue = cloneDeep(defaultValueRef.value[key]); + formModel[key] = isInput ? defaultValue || '' : defaultValue; }); nextTick(() => clearValidate()); @@ -100,7 +101,7 @@ export function useFormEvents({ } catch (e) { // key not exist if (isDef(defaultValueRef.value[nestKey])) { - formModel[nestKey] = defaultValueRef.value[nestKey]; + formModel[nestKey] = cloneDeep(defaultValueRef.value[nestKey]); } } }); diff --git a/src/components/Form/src/hooks/useFormValues.ts b/src/components/Form/src/hooks/useFormValues.ts index b5492dfe..34dd9ddf 100644 --- a/src/components/Form/src/hooks/useFormValues.ts +++ b/src/components/Form/src/hooks/useFormValues.ts @@ -3,7 +3,7 @@ import { dateUtil } from '/@/utils/dateUtil'; import { unref } from 'vue'; import type { Ref, ComputedRef } from 'vue'; import type { FormProps, FormSchema } from '../types/form'; -import { set } from 'lodash-es'; +import { cloneDeep, set } from 'lodash-es'; interface UseFormValuesContext { defaultValueRef: Ref; @@ -124,7 +124,7 @@ export function useFormValues({ } } }); - defaultValueRef.value = obj; + defaultValueRef.value = cloneDeep(obj); } return { handleFormValues, initDefault }; diff --git a/src/components/Tree/index.ts b/src/components/Tree/index.ts index 7df19cf8..169035aa 100644 --- a/src/components/Tree/index.ts +++ b/src/components/Tree/index.ts @@ -1,6 +1,6 @@ -import BasicTree from './src/Tree.vue'; +import BasicTree from './src/BasicTree.vue'; import './style'; export { BasicTree }; export type { ContextMenuItem } from '/@/hooks/web/useContextMenu'; -export * from './src/tree'; +export * from './src/types/tree'; diff --git a/src/components/Tree/src/Tree.vue b/src/components/Tree/src/BasicTree.vue similarity index 97% rename from src/components/Tree/src/Tree.vue rename to src/components/Tree/src/BasicTree.vue index 5fef510a..a4af4aed 100644 --- a/src/components/Tree/src/Tree.vue +++ b/src/components/Tree/src/BasicTree.vue @@ -1,6 +1,13 @@