From a4ed9e8d8f04b692587846434f40e28d379f3c39 Mon Sep 17 00:00:00 2001 From: chenjiajian <798095202@qq.com> Date: Mon, 29 Apr 2019 10:40:37 +0800 Subject: [PATCH] =?UTF-8?q?fix(taro-weapp/swan/tt/qq/):=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=20props=20=E7=B3=BB=E7=BB=9F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. observer 中 updateComponent 的调用改为异步 2. compid 存在时才监听此 component --- packages/taro-qq/src/create-component.js | 8 +++++--- packages/taro-qq/src/propsManager.js | 3 ++- packages/taro-swan/src/create-component.js | 8 +++++--- packages/taro-swan/src/propsManager.js | 3 ++- packages/taro-tt/src/create-component.js | 8 +++++--- packages/taro-tt/src/propsManager.js | 3 ++- packages/taro-weapp/src/create-component.js | 8 +++++--- packages/taro-weapp/src/propsManager.js | 3 ++- 8 files changed, 28 insertions(+), 16 deletions(-) diff --git a/packages/taro-qq/src/create-component.js b/packages/taro-qq/src/create-component.js index 425f0258b488..dd51fbf70ae4 100644 --- a/packages/taro-qq/src/create-component.js +++ b/packages/taro-qq/src/create-component.js @@ -250,9 +250,11 @@ function initComponent (ComponentClass, isPage) { // 动态组件执行改造函数副本的时,在初始化数据前计算好props if (!isPage) { const compid = this.data.compid - propsManager.observers[compid] = { - component: this.$component, - ComponentClass + if (compid) { + propsManager.observers[compid] = { + component: this.$component, + ComponentClass + } } const nextProps = filterProps(ComponentClass.defaultProps, propsManager.map[compid], this.$component.props) this.$component.props = nextProps diff --git a/packages/taro-qq/src/propsManager.js b/packages/taro-qq/src/propsManager.js index d49be93bb069..8cda7a5b466b 100644 --- a/packages/taro-qq/src/propsManager.js +++ b/packages/taro-qq/src/propsManager.js @@ -1,5 +1,6 @@ import { updateComponent } from './lifecycle' import { filterProps } from './create-component' +import nextTick from './next-tick' class Manager { map = {} @@ -25,7 +26,7 @@ class Manager { const nextProps = filterProps(ComponentClass.defaultProps, props, component.props) component.props = nextProps component._unsafeCallUpdate = true - updateComponent(component) + nextTick(() => updateComponent(component)) component._unsafeCallUpdate = false } }) diff --git a/packages/taro-swan/src/create-component.js b/packages/taro-swan/src/create-component.js index e24dd2ffb11a..443c0afca01c 100644 --- a/packages/taro-swan/src/create-component.js +++ b/packages/taro-swan/src/create-component.js @@ -195,9 +195,11 @@ function initComponent (ComponentClass, isPage) { // 动态组件执行改造函数副本的时,在初始化数据前计算好props if (hasPageInited && !isPage) { const compid = this.data.compid - propsManager.observers[compid] = { - component: this.$component, - ComponentClass + if (compid) { + propsManager.observers[compid] = { + component: this.$component, + ComponentClass + } } const nextProps = filterProps(ComponentClass.defaultProps, propsManager.map[compid], this.$component.props) this.$component.props = nextProps diff --git a/packages/taro-swan/src/propsManager.js b/packages/taro-swan/src/propsManager.js index d49be93bb069..8cda7a5b466b 100644 --- a/packages/taro-swan/src/propsManager.js +++ b/packages/taro-swan/src/propsManager.js @@ -1,5 +1,6 @@ import { updateComponent } from './lifecycle' import { filterProps } from './create-component' +import nextTick from './next-tick' class Manager { map = {} @@ -25,7 +26,7 @@ class Manager { const nextProps = filterProps(ComponentClass.defaultProps, props, component.props) component.props = nextProps component._unsafeCallUpdate = true - updateComponent(component) + nextTick(() => updateComponent(component)) component._unsafeCallUpdate = false } }) diff --git a/packages/taro-tt/src/create-component.js b/packages/taro-tt/src/create-component.js index b8547b689a07..5eb26249b1b6 100644 --- a/packages/taro-tt/src/create-component.js +++ b/packages/taro-tt/src/create-component.js @@ -206,9 +206,11 @@ function initComponent (ComponentClass, isPage) { // 动态组件执行改造函数副本的时,在初始化数据前计算好props if (hasPageInited && !isPage) { const compid = this.data.compid - propsManager.observers[compid] = { - component: this.$component, - ComponentClass + if (compid) { + propsManager.observers[compid] = { + component: this.$component, + ComponentClass + } } const nextProps = filterProps(ComponentClass.defaultProps, propsManager.map[compid], this.$component.props) this.$component.props = nextProps diff --git a/packages/taro-tt/src/propsManager.js b/packages/taro-tt/src/propsManager.js index d49be93bb069..8cda7a5b466b 100644 --- a/packages/taro-tt/src/propsManager.js +++ b/packages/taro-tt/src/propsManager.js @@ -1,5 +1,6 @@ import { updateComponent } from './lifecycle' import { filterProps } from './create-component' +import nextTick from './next-tick' class Manager { map = {} @@ -25,7 +26,7 @@ class Manager { const nextProps = filterProps(ComponentClass.defaultProps, props, component.props) component.props = nextProps component._unsafeCallUpdate = true - updateComponent(component) + nextTick(() => updateComponent(component)) component._unsafeCallUpdate = false } }) diff --git a/packages/taro-weapp/src/create-component.js b/packages/taro-weapp/src/create-component.js index aa6a734b4c28..e94939523bed 100644 --- a/packages/taro-weapp/src/create-component.js +++ b/packages/taro-weapp/src/create-component.js @@ -250,9 +250,11 @@ function initComponent (ComponentClass, isPage) { // 动态组件执行改造函数副本的时,在初始化数据前计算好props if (!isPage) { const compid = this.data.compid - propsManager.observers[compid] = { - component: this.$component, - ComponentClass + if (compid) { + propsManager.observers[compid] = { + component: this.$component, + ComponentClass + } } const nextProps = filterProps(ComponentClass.defaultProps, propsManager.map[compid], this.$component.props) this.$component.props = nextProps diff --git a/packages/taro-weapp/src/propsManager.js b/packages/taro-weapp/src/propsManager.js index d49be93bb069..8cda7a5b466b 100644 --- a/packages/taro-weapp/src/propsManager.js +++ b/packages/taro-weapp/src/propsManager.js @@ -1,5 +1,6 @@ import { updateComponent } from './lifecycle' import { filterProps } from './create-component' +import nextTick from './next-tick' class Manager { map = {} @@ -25,7 +26,7 @@ class Manager { const nextProps = filterProps(ComponentClass.defaultProps, props, component.props) component.props = nextProps component._unsafeCallUpdate = true - updateComponent(component) + nextTick(() => updateComponent(component)) component._unsafeCallUpdate = false } })