From 7818c21bca79cd8179d3a2d5231fba17eac5c2f9 Mon Sep 17 00:00:00 2001 From: janrywang Date: Sun, 6 Mar 2022 18:37:16 +0800 Subject: [PATCH 1/2] fix(core): fix empty string/number can not rewrite default value --- packages/core/src/__tests__/field.spec.ts | 39 +++++++++++++++++++++++ packages/core/src/shared/internals.ts | 5 +++ 2 files changed, 44 insertions(+) diff --git a/packages/core/src/__tests__/field.spec.ts b/packages/core/src/__tests__/field.spec.ts index 7df4a3b7cdf..f1adf17addb 100644 --- a/packages/core/src/__tests__/field.spec.ts +++ b/packages/core/src/__tests__/field.spec.ts @@ -2002,3 +2002,42 @@ test('relative query with void field', () => { expect(bb.query('.aa').take()).toBe(aa) }) + +test('empty string or number value need rewrite default value', () => { + const form = attach( + createForm({ + values: { + aa: '', + bb: 0, + }, + }) + ) + attach( + form.createField({ + name: 'aa', + initialValue: 'test', + }) + ) + attach( + form.createField({ + name: 'bb', + initialValue: 123, + }) + ) + attach( + form.createField({ + name: 'cc', + initialValue: 'test', + }) + ) + attach( + form.createField({ + name: 'dd', + initialValue: 123, + }) + ) + expect(form.values.aa).toEqual('') + expect(form.values.bb).toEqual(0) + expect(form.values.cc).toEqual('test') + expect(form.values.dd).toEqual(123) +}) diff --git a/packages/core/src/shared/internals.ts b/packages/core/src/shared/internals.ts index 23ca21baf71..6dc7a44c785 100644 --- a/packages/core/src/shared/internals.ts +++ b/packages/core/src/shared/internals.ts @@ -1027,6 +1027,11 @@ export const allowAssignDefaultValue = (target: any, source: any) => { return false } + if (typeof target === typeof source) { + if (target === '') return false + if (target === 0) return false + } + if (isEmptyTarget) { if (isEmptySource) { return false From 55bda29a8402e40c0da5b3fe8bad4412f3c08ee7 Mon Sep 17 00:00:00 2001 From: janrywang Date: Sun, 6 Mar 2022 18:37:57 +0800 Subject: [PATCH 2/2] chore: fix tests --- packages/core/src/__tests__/field.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/__tests__/field.spec.ts b/packages/core/src/__tests__/field.spec.ts index f1adf17addb..ebf5a7c10d0 100644 --- a/packages/core/src/__tests__/field.spec.ts +++ b/packages/core/src/__tests__/field.spec.ts @@ -2005,7 +2005,7 @@ test('relative query with void field', () => { test('empty string or number value need rewrite default value', () => { const form = attach( - createForm({ + createForm({ values: { aa: '', bb: 0,