From f3abaae22499d7477b64137948abd34dd7adc737 Mon Sep 17 00:00:00 2001 From: chenjiajian <798095202@qq.com> Date: Fri, 15 Jan 2021 14:44:11 +0800 Subject: [PATCH] =?UTF-8?q?fix(runtime):=20=E4=BF=AE=E5=A4=8Dreact?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=9B=9E=E8=B0=83=E9=87=8C=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E6=9B=B4=E6=96=B0=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8Cfix=20#8516?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/taro-runtime/src/dom/event.ts | 9 ++++++++- packages/taro-runtime/src/dsl/react.ts | 3 +++ packages/taro-runtime/src/reconciler.ts | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/taro-runtime/src/dom/event.ts b/packages/taro-runtime/src/dom/event.ts index 3043ddcf8344..be27185d08c5 100644 --- a/packages/taro-runtime/src/dom/event.ts +++ b/packages/taro-runtime/src/dom/event.ts @@ -100,6 +100,13 @@ export function eventHandler (event: MpEvent) { const node = document.getElementById(event.currentTarget.id) if (node != null) { - node.dispatchEvent(createEvent(event, node)) + const dispatch = () => { + node.dispatchEvent(createEvent(event, node)) + } + if (typeof CurrentReconciler.batchedEventUpdates === 'function') { + CurrentReconciler.batchedEventUpdates(dispatch) + } else { + dispatch() + } } } diff --git a/packages/taro-runtime/src/dsl/react.ts b/packages/taro-runtime/src/dsl/react.ts index 0839373f3cb2..ac9e62fbac2d 100644 --- a/packages/taro-runtime/src/dsl/react.ts +++ b/packages/taro-runtime/src/dsl/react.ts @@ -113,6 +113,9 @@ function setReconciler () { }, modifyEventType (event) { event.type = event.type.replace(/-/g, '') + }, + batchedEventUpdates (cb) { + ReactDOM.unstable_batchedUpdates(cb) } } diff --git a/packages/taro-runtime/src/reconciler.ts b/packages/taro-runtime/src/reconciler.ts index 739858fff495..e68883b4d504 100644 --- a/packages/taro-runtime/src/reconciler.ts +++ b/packages/taro-runtime/src/reconciler.ts @@ -27,6 +27,8 @@ export interface Reconciler + batchedEventUpdates?(cb: () => void): void + // h5 createPullDownComponent?(el: Instance, path: string, framework)