diff --git a/packages/shared/src/components.ts b/packages/shared/src/components.ts index 63c1d3f5a429..4eea6db91e81 100644 --- a/packages/shared/src/components.ts +++ b/packages/shared/src/components.ts @@ -98,7 +98,6 @@ const Map = { 'enable-rotate': 'false', 'enable-satellite': 'false', 'enable-traffic': 'false', - setting: '{}', bindMarkerTap: '', bindLabelTap: '', bindControlTap: '', @@ -106,7 +105,15 @@ const Map = { bindUpdated: '', bindRegionChange: '', bindPoiTap: '', - ...touchEvents + ...touchEvents, + ...selectEnv({ + alipay: { + setting: '{}' + }, + default: { + setting: '[]' + } + }) } const Progress = { diff --git a/packages/taro-react/src/props.ts b/packages/taro-react/src/props.ts index 5d39a197cc87..c9393dd38fde 100644 --- a/packages/taro-react/src/props.ts +++ b/packages/taro-react/src/props.ts @@ -49,7 +49,12 @@ function setEvent (dom: TaroElement, name: string, value: unknown, oldValue?: un if (!oldValue) { dom.addEventListener(eventName, eventProxy, isCapture) } - dom.__handlers[eventName][0] = value + if (eventName === 'regionchange') { + dom.__handlers.begin[0] = value + dom.__handlers.end[0] = value + } else { + dom.__handlers[eventName][0] = value + } } else { dom.removeEventListener(eventName, eventProxy) } diff --git a/packages/taro-runtime/src/dom/event_target.ts b/packages/taro-runtime/src/dom/event_target.ts index 1b643428a239..8dd47494db78 100644 --- a/packages/taro-runtime/src/dom/event_target.ts +++ b/packages/taro-runtime/src/dom/event_target.ts @@ -17,7 +17,12 @@ export class TaroEventTarget { public __handlers: Record = {} public addEventListener (type: string, handler: EventHandler, options?: boolean | AddEventListenerOptions) { - warn(type === 'regionchange', 'map 组件的 regionchange 事件非常特殊,请使用 begin/end 事件替代。详情:https://github.com/NervJS/taro/issues/5766') + if (type === 'regionchange') { + // map 组件的 regionchange 事件非常特殊,详情:https://github.com/NervJS/taro/issues/5766 + this.addEventListener('begin', handler, options) + this.addEventListener('end', handler, options) + return + } type = type.toLowerCase() const handlers = this.__handlers[type] let isCapture = Boolean(options)