From e328d8425559bc479a65b91503cb8c9beef067bc Mon Sep 17 00:00:00 2001 From: wangyaqi Date: Wed, 13 Nov 2019 19:34:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BA=A0=E6=AD=A3=E7=99=BE=E5=BA=A6?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8FonShow=E5=9C=A8onLoad=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=E8=A7=A6=E5=8F=91=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mp-baidu/runtime/wrapper/component-parser.js | 14 +++++++------- .../mp-baidu/runtime/wrapper/page-parser.js | 10 +++++++++- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/platforms/mp-baidu/runtime/wrapper/component-parser.js b/src/platforms/mp-baidu/runtime/wrapper/component-parser.js index c95f81ae6..b7a692a88 100644 --- a/src/platforms/mp-baidu/runtime/wrapper/component-parser.js +++ b/src/platforms/mp-baidu/runtime/wrapper/component-parser.js @@ -15,23 +15,23 @@ export default function parseComponent (vueOptions) { const componentOptions = parseBaseComponent(vueOptions, { isPage, initRelation - }) - + }) + + // 关于百度小程序新生命周期(2.0)的说明(组件作为页面时): + // lifetimes:attached --> methods:onShow --> methods:onLoad --> methods:onReady + // 这里在新生命周期强制将onShow挪到onLoad之后触发,另外一处修改在page-parser.js const oldAttached = componentOptions.lifetimes.attached - componentOptions.lifetimes.attached = function attached () { oldAttached.call(this) if (isPage.call(this)) { // 百度 onLoad 在 attached 之前触发 // 百度 当组件作为页面时 pageinstancce 不是原来组件的 instance this.pageinstance.$vm = this.$vm - if (hasOwn(this.pageinstance, '_$args')) { this.$vm.$mp.query = this.pageinstance._$args - this.$vm.__call_hook('onLoad', this.pageinstance._$args) + this.$vm.__call_hook('onLoad', this.pageinstance._$args) + this.$vm.__call_hook('onShow') delete this.pageinstance._$args } - // TODO 3.105.17以下基础库内百度 Component 作为页面时,methods 中的 onShow 不触发 - !newLifecycle && this.$vm.__call_hook('onShow') } else { // 百度小程序组件不触发methods内的onReady if (this.$vm) { diff --git a/src/platforms/mp-baidu/runtime/wrapper/page-parser.js b/src/platforms/mp-baidu/runtime/wrapper/page-parser.js index 1c7af37e2..aba2a228d 100644 --- a/src/platforms/mp-baidu/runtime/wrapper/page-parser.js +++ b/src/platforms/mp-baidu/runtime/wrapper/page-parser.js @@ -23,13 +23,21 @@ export default function parsePage (vuePageOptions) { const pageOptions = parseBasePage(vuePageOptions, { isPage, initRelation - }) + }) + + const newLifecycle = swan.canIUse('lifecycle-2-0') + + // 纠正百度小程序新生命周期(2.0)methods:onShow在methods:onLoad之前触发的问题 + if (newLifecycle) { + delete pageOptions.methods.onShow + } pageOptions.methods.onLoad = function onLoad (args) { // 百度 onLoad 在 attached 之前触发,先存储 args, 在 attached 里边触发 onLoad if (this.$vm) { this.$vm.$mp.query = args this.$vm.__call_hook('onLoad', args) + this.$vm.__call_hook('onShow') } else { this.pageinstance._$args = args } -- GitLab