From 2eadde994afc397b7ac29aa79f1c031b4a395921 Mon Sep 17 00:00:00 2001 From: hyperq Date: Wed, 12 May 2021 15:36:05 +0800 Subject: [PATCH 1/2] feat(form): add form field nested support --- src/components/Form/src/hooks/useFormValues.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/components/Form/src/hooks/useFormValues.ts b/src/components/Form/src/hooks/useFormValues.ts index 9d1eff222de..8e46c55902f 100644 --- a/src/components/Form/src/hooks/useFormValues.ts +++ b/src/components/Form/src/hooks/useFormValues.ts @@ -40,7 +40,22 @@ export function useFormValues({ if (isString(value)) { value = value.trim(); } - res[key] = value; + if (key.indexOf('.') > 0) { + let keys = key.split('.') + let temp = res + for (let i = 0; i < keys.length; i++) { + if (i == keys.length - 1) { + temp[keys[i]] = value + break + } + if (!temp.hasOwnProperty(keys[i])) { + temp[keys[i]] = {} + } + temp = temp[keys[i]] + } + } else { + res[key] = value + } } return handleRangeTimeValue(res); } From 118eb23eb3c770da80ec0d73741dc06767dc5b23 Mon Sep 17 00:00:00 2001 From: hyperq Date: Wed, 12 May 2021 19:34:08 +0800 Subject: [PATCH 2/2] refactor(form): use lodash set replace --- .../Form/src/hooks/useFormValues.ts | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/src/components/Form/src/hooks/useFormValues.ts b/src/components/Form/src/hooks/useFormValues.ts index 8e46c55902f..777ee171afc 100644 --- a/src/components/Form/src/hooks/useFormValues.ts +++ b/src/components/Form/src/hooks/useFormValues.ts @@ -5,6 +5,8 @@ import { unref } from 'vue'; import type { Ref, ComputedRef } from 'vue'; import type { FormProps, FormSchema } from '../types/form'; +import { set } from 'lodash-es'; + interface UseFormValuesContext { defaultValueRef: Ref; getSchema: ComputedRef; @@ -40,22 +42,7 @@ export function useFormValues({ if (isString(value)) { value = value.trim(); } - if (key.indexOf('.') > 0) { - let keys = key.split('.') - let temp = res - for (let i = 0; i < keys.length; i++) { - if (i == keys.length - 1) { - temp[keys[i]] = value - break - } - if (!temp.hasOwnProperty(keys[i])) { - temp[keys[i]] = {} - } - temp = temp[keys[i]] - } - } else { - res[key] = value - } + set(res, key, value); } return handleRangeTimeValue(res); }