From 9f4b3960bb0b96061bf62757df6740bc41a7b062 Mon Sep 17 00:00:00 2001 From: qiang Date: Fri, 11 Jun 2021 14:28:47 +0800 Subject: [PATCH] chore: build runtime --- packages/uni-app-plus/dist/index.js | 5 ++ packages/uni-mp-alipay/dist/index.js | 5 ++ packages/uni-mp-baidu/dist/index.js | 8 ++- packages/uni-mp-kuaishou/dist/index.js | 5 ++ packages/uni-mp-qq/dist/index.js | 5 ++ packages/uni-mp-toutiao/dist/index.js | 57 ++++++++++++++------- packages/uni-mp-weixin/dist/index.js | 5 ++ packages/uni-quickapp-webview/dist/index.js | 8 ++- 8 files changed, 78 insertions(+), 20 deletions(-) diff --git a/packages/uni-app-plus/dist/index.js b/packages/uni-app-plus/dist/index.js index 436cd4e46..7ef8af4f8 100644 --- a/packages/uni-app-plus/dist/index.js +++ b/packages/uni-app-plus/dist/index.js @@ -900,6 +900,11 @@ function initProperties (props, isBehavior = false, file = '') { type: Object, value: null }; + // scopedSlotsCompiler auto + properties.scopedSlotsCompiler = { + type: String, + value: '' + }; properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots type: null, value: [], diff --git a/packages/uni-mp-alipay/dist/index.js b/packages/uni-mp-alipay/dist/index.js index 515dc971c..631680610 100644 --- a/packages/uni-mp-alipay/dist/index.js +++ b/packages/uni-mp-alipay/dist/index.js @@ -1636,6 +1636,11 @@ function initProperties (props, isBehavior = false, file = '') { type: Object, value: null }; + // scopedSlotsCompiler auto + properties.scopedSlotsCompiler = { + type: String, + value: '' + }; properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots type: null, value: [], diff --git a/packages/uni-mp-baidu/dist/index.js b/packages/uni-mp-baidu/dist/index.js index 09eca0f94..b69f94570 100644 --- a/packages/uni-mp-baidu/dist/index.js +++ b/packages/uni-mp-baidu/dist/index.js @@ -1313,6 +1313,11 @@ function initProperties (props, isBehavior = false, file = '') { type: Object, value: null }; + // scopedSlotsCompiler auto + properties.scopedSlotsCompiler = { + type: String, + value: '' + }; properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots type: null, value: [], @@ -1883,7 +1888,8 @@ const mocks = ['nodeId', 'componentName', '_componentId', 'uniquePrefix']; function isPage () { // 百度小程序组件的id,某些情况下可能是number类型的0,不能直接return !this.ownerId 判断当前组件是否是Page // 否则会导致mounted不执行 - return typeof this.ownerId === 'undefined' + // 基础库 3.290.33 及以上 ownerId 为 null + return typeof this.ownerId === 'undefined' || this.ownerId === null } function initRelation (detail) { diff --git a/packages/uni-mp-kuaishou/dist/index.js b/packages/uni-mp-kuaishou/dist/index.js index 9d5e35166..da068dd10 100644 --- a/packages/uni-mp-kuaishou/dist/index.js +++ b/packages/uni-mp-kuaishou/dist/index.js @@ -1072,6 +1072,11 @@ function initProperties (props, isBehavior = false, file = '') { type: Object, value: null }; + // scopedSlotsCompiler auto + properties.scopedSlotsCompiler = { + type: String, + value: '' + }; properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots type: null, value: [], diff --git a/packages/uni-mp-qq/dist/index.js b/packages/uni-mp-qq/dist/index.js index c47c8aaed..3d3917ed5 100644 --- a/packages/uni-mp-qq/dist/index.js +++ b/packages/uni-mp-qq/dist/index.js @@ -1233,6 +1233,11 @@ function initProperties (props, isBehavior = false, file = '') { type: Object, value: null }; + // scopedSlotsCompiler auto + properties.scopedSlotsCompiler = { + type: String, + value: '' + }; properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots type: null, value: [], diff --git a/packages/uni-mp-toutiao/dist/index.js b/packages/uni-mp-toutiao/dist/index.js index c66fde3d6..caa7a88f2 100644 --- a/packages/uni-mp-toutiao/dist/index.js +++ b/packages/uni-mp-toutiao/dist/index.js @@ -1325,6 +1325,11 @@ function initProperties (props, isBehavior = false, file = '') { type: Object, value: null }; + // scopedSlotsCompiler auto + properties.scopedSlotsCompiler = { + type: String, + value: '' + }; properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots type: null, value: [], @@ -2121,34 +2126,50 @@ function parseBaseComponent (vueComponentOptions, { return [componentOptions, VueComponent] } +const components = []; + function parseComponent (vueOptions) { const [componentOptions, VueComponent] = parseBaseComponent(vueOptions); + // 基础库 2.0 以上 attached 顺序错乱,按照 created 顺序强制纠正 + componentOptions.lifetimes.created = function created () { + components.push(this); + }; + componentOptions.lifetimes.attached = function attached () { - const properties = this.properties; + this.__lifetimes_attached = function () { + const properties = this.properties; - const options = { - mpType: isPage.call(this) ? 'page' : 'component', - mpInstance: this, - propsData: properties - }; + const options = { + mpType: isPage.call(this) ? 'page' : 'component', + mpInstance: this, + propsData: properties + }; - initVueIds(properties.vueId, this); + initVueIds(properties.vueId, this); - // 初始化 vue 实例 - this.$vm = new VueComponent(options); + // 初始化 vue 实例 + this.$vm = new VueComponent(options); - // 处理$slots,$scopedSlots(暂不支持动态变化$slots) - initSlots(this.$vm, properties.vueSlots); + // 处理$slots,$scopedSlots(暂不支持动态变化$slots) + initSlots(this.$vm, properties.vueSlots); - // 处理父子关系 - initRelation.call(this, { - vuePid: this._$vuePid, - mpInstance: this - }); + // 处理父子关系 + initRelation.call(this, { + vuePid: this._$vuePid, + mpInstance: this + }); - // 触发首次 setData - this.$vm.$mount(); + // 触发首次 setData + this.$vm.$mount(); + }; + let component = this; + while (component && component.__lifetimes_attached && components[0] && component === components[0]) { + components.shift(); + component.__lifetimes_attached(); + delete component.__lifetimes_attached; + component = components[0]; + } }; // ready 比 handleLink 还早,初始化逻辑放到 handleLink 中 diff --git a/packages/uni-mp-weixin/dist/index.js b/packages/uni-mp-weixin/dist/index.js index 2184428dd..85f9e350e 100644 --- a/packages/uni-mp-weixin/dist/index.js +++ b/packages/uni-mp-weixin/dist/index.js @@ -969,6 +969,11 @@ function initProperties (props, isBehavior = false, file = '') { type: Object, value: null }; + // scopedSlotsCompiler auto + properties.scopedSlotsCompiler = { + type: String, + value: '' + }; properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots type: null, value: [], diff --git a/packages/uni-quickapp-webview/dist/index.js b/packages/uni-quickapp-webview/dist/index.js index 75c8a7ae3..80fa241a0 100644 --- a/packages/uni-quickapp-webview/dist/index.js +++ b/packages/uni-quickapp-webview/dist/index.js @@ -1039,6 +1039,11 @@ function initProperties (props, isBehavior = false, file = '') { type: Object, value: null }; + // scopedSlotsCompiler auto + properties.scopedSlotsCompiler = { + type: String, + value: '' + }; properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots type: null, value: [], @@ -1477,7 +1482,8 @@ const mocks = ['nodeId', 'componentName', '_componentId', 'uniquePrefix']; function isPage () { // 百度小程序组件的id,某些情况下可能是number类型的0,不能直接return !this.ownerId 判断当前组件是否是Page // 否则会导致mounted不执行 - return typeof this.ownerId === 'undefined' + // 基础库 3.290.33 及以上 ownerId 为 null + return typeof this.ownerId === 'undefined' || this.ownerId === null } function findVmByVueId (vm, vuePid) { -- GitLab