diff --git a/package.json b/package.json index 29f3fe7bd3a01b1817cebabc0eaba29591edea95..37f48d8c5f409ea70057369f7c2aa31afd6b5027 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,6 @@ }, "dependencies": { "base64-arraybuffer": "^0.2.0", - "compare-versions": "^3.5.1", "intersection-observer": "^0.7.0", "safe-area-insets": "^1.4.1" }, diff --git a/src/platforms/mp-baidu/runtime/wrapper/component-parser.js b/src/platforms/mp-baidu/runtime/wrapper/component-parser.js index cc72eba6001ff21d7194d4a30a4c1903a2d65546..97d18574bce2b913b33d9f8968ff77288d4ea13c 100644 --- a/src/platforms/mp-baidu/runtime/wrapper/component-parser.js +++ b/src/platforms/mp-baidu/runtime/wrapper/component-parser.js @@ -1,17 +1,17 @@ -import { - hasOwn -} from 'uni-shared' - -import compareVersions from 'compare-versions' - import { - isPage, + hasOwn +} from 'uni-shared' + +import { + isPage, initRelation } from './util' import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-base-parser' -export default function parseComponent (vueOptions) { +const newLifecycle = swan.canIUse('lifecycle-2-0') + +export default function parseComponent(vueOptions) { const componentOptions = parseBaseComponent(vueOptions, { isPage, initRelation @@ -19,20 +19,31 @@ export default function parseComponent (vueOptions) { const oldAttached = componentOptions.lifetimes.attached - componentOptions.lifetimes.attached = function 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')) { + 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) delete this.pageinstance._$args } - // TODO 3.105.17以下基础库内百度 Component 作为页面时,methods 中的 onShow 不触发 - if (compareVersions.compare(swan.getEnvInfoSync().sdkVersion, '3.105.17', '<')) { - this.$vm.__call_hook('onShow') + // TODO 3.105.17以下基础库内百度 Component 作为页面时,methods 中的 onShow 不触发 + !newLifecycle && this.$vm.__call_hook('onShow') + } + } + + if (newLifecycle) { + delete componentOptions.lifetimes.ready + componentOptions.methods.onReady = function() { + if (this.$vm) { + this.$vm._isMounted = true + this.$vm.__call_hook('mounted') + this.$vm.__call_hook('onReady') + } else { + // this.is && console.warn(this.is + ' is not attached') } } }