diff --git a/packages/core/src/__tests__/field.spec.ts b/packages/core/src/__tests__/field.spec.ts index 7df4a3b7cdf..ebf5a7c10d0 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