diff --git a/src/platforms/mp-baidu/runtime/wrapper/component-parser.js b/src/platforms/mp-baidu/runtime/wrapper/component-parser.js index 47cf6208f514646f7b9e1a6474bd0e886832b648..db85b1d1dfbb6c5257c5bb7af481c621a15c7bb2 100644 --- a/src/platforms/mp-baidu/runtime/wrapper/component-parser.js +++ b/src/platforms/mp-baidu/runtime/wrapper/component-parser.js @@ -1,5 +1,6 @@ import { - hasOwn + hasOwn, + noop } from 'uni-shared' import { @@ -24,10 +25,17 @@ export default function parseComponent (vueOptions) { // 关于百度小程序生命周期的说明(组件作为页面时): // lifetimes:attached --> methods:onShow --> methods:onLoad --> methods:onReady // 这里在强制将onShow挪到onLoad之后触发,另外一处修改在page-parser.js - const oldAttached = componentOptions.lifetimes.attached + let oldAttached = componentOptions.lifetimes.attached + // 百度小程序基础库 3.260 以上支持页面 onInit 生命周期,提前创建 vm 实例 + componentOptions.lifetimes.onInit = function onInit (query) { + oldAttached.call(this) + oldAttached = noop + this.pageinstance.$vm = this.$vm + this.$vm.__call_hook('onInit', query) + } componentOptions.lifetimes.attached = function attached () { oldAttached.call(this) - if (isPage.call(this)) { // 百度 onLoad 在 attached 之前触发 + if (isPage.call(this)) { // 百度 onLoad 在 attached 之前触发(基础库小于 3.70) // 百度 当组件作为页面时 pageinstancce 不是原来组件的 instance this.pageinstance.$vm = this.$vm if (hasOwn(this.pageinstance, '_$args')) { @@ -62,4 +70,4 @@ export default function parseComponent (vueOptions) { delete componentOptions.methods.__l return componentOptions -} +} diff --git a/src/platforms/mp-baidu/runtime/wrapper/page-parser.js b/src/platforms/mp-baidu/runtime/wrapper/page-parser.js index baac54112c1d0eecbc5032ae39d0568bac4d546b..3f144471ec3b105cafcc83a625b8f170d71159f0 100644 --- a/src/platforms/mp-baidu/runtime/wrapper/page-parser.js +++ b/src/platforms/mp-baidu/runtime/wrapper/page-parser.js @@ -42,7 +42,7 @@ export default function parsePage (vuePageOptions) { } pageOptions.methods.onLoad = function onLoad (query) { - // 百度 onLoad 在 attached 之前触发,先存储 args, 在 attached 里边触发 onLoad + // 百度 onLoad 在 attached 之前触发(基础库小于 3.70),先存储 args, 在 attached 里边触发 onLoad if (this.$vm) { const copyQuery = Object.assign({}, query) delete copyQuery.__id__ @@ -63,4 +63,4 @@ export default function parsePage (vuePageOptions) { } return pageOptions -} +}