diff --git a/packages/core/src/__test__/form.spec.js b/packages/core/src/__test__/form.spec.js
new file mode 100644
index 00000000000..097cf68678f
--- /dev/null
+++ b/packages/core/src/__test__/form.spec.js
@@ -0,0 +1,46 @@
+import { createForm } from '../index'
+
+test('Increase lastValidateValue value processing during initialization', async () => {
+ const inpueFieldValidate = jest.fn()
+ const requriedFieldValidate = jest.fn()
+
+ const form = createForm({
+ initialValues: {
+ requriedField: 'defaultValue'
+ }
+ })
+
+ form.registerField('inpueField', {
+ props: {
+ requried: true,
+ 'x-rules': () =>
+ new Promise(resolve => {
+ inpueFieldValidate()
+
+ resolve()
+ })
+ }
+ })
+
+ form.registerField('requriedField', {
+ props: {
+ requried: true,
+ 'x-rules': () =>
+ new Promise(resolve => {
+ requriedFieldValidate()
+
+ resolve()
+ })
+ }
+ })
+
+ form.setValue('inpueField', 1111)
+ await sleep(1000)
+ expect(inpueFieldValidate).toHaveBeenCalledTimes(1)
+ expect(requriedFieldValidate).toHaveBeenCalledTimes(0)
+
+ form.setValue('requriedField', 2222)
+ await sleep(1000)
+ expect(inpueFieldValidate).toHaveBeenCalledTimes(1)
+ expect(requriedFieldValidate).toHaveBeenCalledTimes(1)
+})
diff --git a/packages/core/src/field.ts b/packages/core/src/field.ts
index 390ee63b8fb..8d6cce91774 100644
--- a/packages/core/src/field.ts
+++ b/packages/core/src/field.ts
@@ -131,6 +131,10 @@ export class Field implements IField {
this.editable = !isEmpty(editable) ? editable : this.getContextEditable()
}
+ if (options.initialValue) {
+ this.lastValidateValue = options.initialValue
+ }
+
if (
this.pristine &&
!isEmpty(this.initialValue) &&
diff --git a/packages/react/src/__tests__/schema_form.spec.js b/packages/react/src/__tests__/schema_form.spec.js
new file mode 100644
index 00000000000..76463884e7c
--- /dev/null
+++ b/packages/react/src/__tests__/schema_form.spec.js
@@ -0,0 +1,60 @@
+import React from 'react'
+import { render, fireEvent } from '@testing-library/react'
+
+import SchemaForm, { Field, registerFormField, connect } from '../index'
+
+registerFormField(
+ 'string',
+ connect()(props => (
+
+ ))
+)
+
+test('Increase lastValidateValue value processing during initialization', async () => {
+ const inpueFieldValidate = jest.fn()
+ const requriedFieldValidate = jest.fn()
+
+ const TestComponent = () => (
+
+
+ new Promise(resolve => {
+ inpueFieldValidate()
+
+ resolve()
+ })
+ }
+ />
+
+ new Promise(resolve => {
+ requriedFieldValidate()
+
+ resolve()
+ })
+ }
+ />
+
+ )
+
+ const { getByTestId } = render()
+ fireEvent.change(getByTestId('inpueField'), { target: { value: 1111 } })
+ await sleep(1000)
+ expect(inpueFieldValidate).toHaveBeenCalledTimes(1)
+ expect(requriedFieldValidate).toHaveBeenCalledTimes(0)
+
+ fireEvent.change(getByTestId('requriedField'), { target: { value: 2222 } })
+ await sleep(1000)
+ expect(inpueFieldValidate).toHaveBeenCalledTimes(1)
+ expect(requriedFieldValidate).toHaveBeenCalledTimes(1)
+})