From 0e4880fb510c1c79980e31a453679585aeb4a2d5 Mon Sep 17 00:00:00 2001 From: janrywang Date: Thu, 9 Jul 2020 14:24:43 +0800 Subject: [PATCH] fix(core): use form batch to sync errors in array state exchanging --- packages/core/src/externals.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/core/src/externals.ts b/packages/core/src/externals.ts index d1d117d6eac..bdc445921f3 100644 --- a/packages/core/src/externals.ts +++ b/packages/core/src/externals.ts @@ -193,8 +193,8 @@ export const createFormExternals = ( delete patchState.values Object.assign(state, patchState) } - syncFormMessages('errors', state, true) - syncFormMessages('warnings', state, true) + syncFormMessages('errors', state) + syncFormMessages('warnings', state) }) } if (currentField) { @@ -228,9 +228,11 @@ export const createFormExternals = ( const currentTags = parseArrayTags(published.value) if (!isEqual(prevTags, currentTags)) { const removedTags = calculateRemovedTags(prevTags, currentTags) - eachArrayExchanges(field.prevState, published, (prev, current) => - exchangeState(path, prev, current) - ) + form.batch(() => { + eachArrayExchanges(field.prevState, published, (prev, current) => + exchangeState(path, prev, current) + ) + }) removeArrayNodes(removedTags) //重置TAG,保证下次状态交换是没问题的 setFormValuesIn(