Skip to content

Commit

Permalink
fix: init lifetimes hook use ExtendedVue options
Browse files Browse the repository at this point in the history
  • Loading branch information
zhetengbiji committed Oct 11, 2022
1 parent c07b539 commit cdbb303
Show file tree
Hide file tree
Showing 21 changed files with 67 additions and 92 deletions.
2 changes: 1 addition & 1 deletion src/core/runtime/wrapper/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ function hasHook (hook, vueOptions) {
return false
}

if (isFn(vueOptions[hook])) {
if (isFn(vueOptions[hook]) || Array.isArray(vueOptions[hook])) {
return true
}
const mixins = vueOptions.mixins
Expand Down
8 changes: 4 additions & 4 deletions src/platforms/app-plus/runtime/wrapper/component-parser.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-parser'

export default function parseComponent (vueComponentOptions) {
const componentOptions = parseBaseComponent(vueComponentOptions)
export default function parseComponent (vueComponentOptions, needVueOptions) {
const [componentOptions, vueOptions] = parseBaseComponent(vueComponentOptions, true)

componentOptions.methods.$getAppWebview = function () {
return plus.webview.getWebviewById(`${this.__wxWebviewId__}`)
}
return componentOptions
}
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
4 changes: 2 additions & 2 deletions src/platforms/mp-alipay/runtime/wrapper/component-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ function initVm (VueComponent) {
}
}

export default function parseComponent (vueComponentOptions) {
export default function parseComponent (vueComponentOptions, needVueOptions) {
const [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions)

const properties = initProperties(vueOptions.props, false, vueOptions.__file)
Expand Down Expand Up @@ -164,5 +164,5 @@ export default function parseComponent (vueComponentOptions) {
})
}

return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
6 changes: 3 additions & 3 deletions src/platforms/mp-alipay/runtime/wrapper/page-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,10 @@ export default function parsePage (vuePageOptions) {
triggerEvent
}

Object.assign(pageOptions.events, vuePageOptions.events || {})
Object.assign(pageOptions.events, vueOptions.events || {})

initHooks(pageOptions, hooks, vuePageOptions)
initUnknownHooks(pageOptions, vuePageOptions, ['onReady'])
initHooks(pageOptions, hooks, vueOptions)
initUnknownHooks(pageOptions, vueOptions, ['onReady'])

if (Array.isArray(vueOptions.wxsCallMethods)) {
vueOptions.wxsCallMethods.forEach(callMethod => {
Expand Down
8 changes: 4 additions & 4 deletions src/platforms/mp-baidu/runtime/wrapper/component-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-bas

const newLifecycle = swan.canIUse('lifecycle-2-0')

export default function parseComponent (vueOptions) {
const componentOptions = parseBaseComponent(vueOptions, {
export default function parseComponent (vueComponentOptions, needVueOptions) {
const [componentOptions, vueOptions] = parseBaseComponent(vueComponentOptions, {
isPage,
initRelation
})
}, true)

// 关于百度小程序生命周期的说明(组件作为页面时):
// lifetimes:attached --> methods:onShow --> methods:onLoad --> methods:onReady
Expand Down Expand Up @@ -90,5 +90,5 @@ export default function parseComponent (vueOptions) {
}
delete componentOptions.methods.__l

return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
10 changes: 1 addition & 9 deletions src/platforms/mp-baidu/runtime/wrapper/page-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@ import {
stringifyQuery
} from 'uni-shared/query'

import {
isPage,
initRelation
} from './util'

import parseBasePage from '../../../mp-weixin/runtime/wrapper/page-base-parser'

function detached ($vm) {
Expand All @@ -24,10 +19,7 @@ function onPageUnload ($vm) {
}

export default function parsePage (vuePageOptions) {
const pageOptions = parseBasePage(vuePageOptions, {
isPage,
initRelation
})
const pageOptions = parseBasePage(vuePageOptions)

// 纠正百度小程序生命周期methods:onShow在methods:onLoad之前触发的问题
pageOptions.methods.onShow = function onShow () {
Expand Down
6 changes: 3 additions & 3 deletions src/platforms/mp-jd/runtime/wrapper/component-parser.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-parser'

export default function parseComponent (vueComponentOptions) {
const componentOptions = parseBaseComponent(vueComponentOptions)
export default function parseComponent (vueComponentOptions, needVueOptions) {
const [componentOptions, vueOptions] = parseBaseComponent(vueComponentOptions, true)
// 京东小程序 lifetimes 存在兼容问题
const lifetimes = componentOptions.lifetimes
Object.keys(lifetimes).forEach(key => {
componentOptions[key] = lifetimes[key]
})
return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
6 changes: 3 additions & 3 deletions src/platforms/mp-kuaishou/runtime/wrapper/component-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import {
fixSetDataEnd
} from '../../../mp-weixin/runtime/wrapper/fix-set-data'

export default function parseComponent (vueComponentOptions) {
const componentOptions = parseBaseComponent(vueComponentOptions)
export default function parseComponent (vueComponentOptions, needVueOptions) {
const [componentOptions, vueOptions] = parseBaseComponent(vueComponentOptions, true)
const oldAttached = componentOptions.lifetimes.attached
componentOptions.lifetimes.attached = function attached () {
// 暂不区分版本
Expand All @@ -21,5 +21,5 @@ export default function parseComponent (vueComponentOptions) {
}
oldAttached.call(this)
}
return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
9 changes: 6 additions & 3 deletions src/platforms/mp-lark/runtime/wrapper/component-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,11 @@ import {

import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-base-parser'

export default function parseComponent (vueOptions) {
const [componentOptions, VueComponent] = parseBaseComponent(vueOptions)
export default function parseComponent (vueComponentOptions, needVueOptions) {
const [componentOptions, vueOptions, VueComponent] = parseBaseComponent(vueComponentOptions, {
isPage,
initRelation
}, true)

componentOptions.lifetimes.attached = function attached () {
const properties = this.properties
Expand Down Expand Up @@ -46,5 +49,5 @@ export default function parseComponent (vueOptions) {

componentOptions.methods.__l = handleLink

return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
9 changes: 2 additions & 7 deletions src/platforms/mp-lark/runtime/wrapper/page-parser.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
import {
isPage,
instances,
initRelation
instances
} from './util'

import parseBasePage from '../../../mp-weixin/runtime/wrapper/page-base-parser'

export default function parsePage (vuePageOptions) {
const pageOptions = parseBasePage(vuePageOptions, {
isPage,
initRelation
})
const pageOptions = parseBasePage(vuePageOptions)
// 页面需要在 ready 中触发,其他组件是在 handleLink 中触发
pageOptions.lifetimes.ready = function ready () {
if (this.$vm && this.$vm.mpType === 'page') {
Expand Down
6 changes: 3 additions & 3 deletions src/platforms/mp-qq/runtime/wrapper/component-parser.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-parser'

export default function parseComponent (vueComponentOptions) {
return parseBaseComponent(vueComponentOptions)
}
export default function parseComponent (vueComponentOptions, needVueOptions) {
return parseBaseComponent(vueComponentOptions, needVueOptions)
}
9 changes: 6 additions & 3 deletions src/platforms/mp-toutiao/runtime/wrapper/component-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,11 @@ function currentComponents (mpInstance, callback) {
}
}

export default function parseComponent (vueOptions) {
const [componentOptions, VueComponent] = parseBaseComponent(vueOptions)
export default function parseComponent (vueComponentOptions, needVueOptions) {
const [componentOptions, vueOptions, VueComponent] = parseBaseComponent(vueComponentOptions, {
isPage,
initRelation
}, true)
const lifetimes = componentOptions.lifetimes

// 基础库 2.0 以上 attached 顺序错乱,按照 created 顺序强制纠正
Expand Down Expand Up @@ -87,5 +90,5 @@ export default function parseComponent (vueOptions) {

componentOptions.methods.__l = handleLink

return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
9 changes: 2 additions & 7 deletions src/platforms/mp-toutiao/runtime/wrapper/page-parser.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
import {
isPage,
instances,
components,
initRelation
components
} from './util'

import parseBasePage from '../../../mp-weixin/runtime/wrapper/page-base-parser'

export default function parsePage (vuePageOptions) {
const pageOptions = parseBasePage(vuePageOptions, {
isPage,
initRelation
})
const pageOptions = parseBasePage(vuePageOptions)
const lifetimes = pageOptions.lifetimes
const oldCreated = lifetimes.created
lifetimes.created = function created () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {
export default function parseBaseComponent (vueComponentOptions, {
isPage,
initRelation
} = {}) {
} = {}, needVueOptions) {
const [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions)

const options = {
Expand Down Expand Up @@ -110,6 +110,9 @@ export default function parseBaseComponent (vueComponentOptions, {
})
}

if (needVueOptions) {
return [componentOptions, vueOptions, VueComponent]
}
if (isPage) {
return componentOptions
}
Expand Down
6 changes: 3 additions & 3 deletions src/platforms/mp-weixin/runtime/wrapper/component-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import {
initRelation
} from './util'

export default function parseComponent (vueComponentOptions) {
export default function parseComponent (vueComponentOptions, needVueOptions) {
return parseBaseComponent(vueComponentOptions, {
isPage,
initRelation
})
}
}, needVueOptions)
}
14 changes: 4 additions & 10 deletions src/platforms/mp-weixin/runtime/wrapper/page-base-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,10 @@ const hooks = [

hooks.push(...PAGE_EVENT_HOOKS)

export default function parseBasePage (vuePageOptions, {
isPage,
initRelation
}) {
const pageOptions = parseComponent(vuePageOptions, {
isPage,
initRelation
})

initHooks(pageOptions.methods, hooks, vuePageOptions)
export default function parseBasePage (vuePageOptions) {
const [pageOptions, vueOptions] = parseComponent(vuePageOptions, true)

initHooks(pageOptions.methods, hooks, vueOptions)

pageOptions.methods.onLoad = function (query) {
this.options = query
Expand Down
12 changes: 2 additions & 10 deletions src/platforms/mp-weixin/runtime/wrapper/page-parser.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
import parseBasePage from './page-base-parser'

import {
isPage,
initRelation
} from './util'

export default function parsePage (vuePageOptions) {
return parseBasePage(vuePageOptions, {
isPage,
initRelation
})
}
return parseBasePage(vuePageOptions)
}
6 changes: 3 additions & 3 deletions src/platforms/mp-xhs/runtime/wrapper/component-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import {
fixSetDataEnd
} from '../../../mp-weixin/runtime/wrapper/fix-set-data'

export default function parseComponent (vueComponentOptions) {
const componentOptions = parseBaseComponent(vueComponentOptions)
export default function parseComponent (vueComponentOptions, needVueOptions) {
const [componentOptions, vueOptions] = parseBaseComponent(vueComponentOptions, true)
const oldAttached = componentOptions.lifetimes.attached
componentOptions.lifetimes.attached = function attached () {
// 暂不区分版本
Expand All @@ -32,5 +32,5 @@ export default function parseComponent (vueComponentOptions) {
}
oldAttached.call(this)
}
return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
4 changes: 2 additions & 2 deletions src/platforms/mp-xhs/runtime/wrapper/page-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ export default function parsePage (vuePageOptions) {
triggerEvent: function noop () {}
}

initHooks(pageOptions, hooks, vuePageOptions)
initUnknownHooks(pageOptions, vuePageOptions, ['onReady'])
initHooks(pageOptions, hooks, vueOptions)
initUnknownHooks(pageOptions, vueOptions, ['onReady'])

if (Array.isArray(vueOptions.wxsCallMethods)) {
vueOptions.wxsCallMethods.forEach(callMethod => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,11 @@ import {

import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-base-parser'

export default function parseComponent (vueOptions) {
const [componentOptions, VueComponent] = parseBaseComponent(vueOptions)
export default function parseComponent (vueComponentOptions, needVueOptions) {
const [componentOptions, vueOptions, VueComponent] = parseBaseComponent(vueComponentOptions, {
isPage,
initRelation
}, true)

componentOptions.lifetimes.attached = function attached () {
const properties = this.properties
Expand Down Expand Up @@ -46,5 +49,5 @@ export default function parseComponent (vueOptions) {

componentOptions.methods.__l = handleLink

return componentOptions
}
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
9 changes: 2 additions & 7 deletions src/platforms/quickapp-webview/runtime/wrapper/page-parser.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
import {
isPage,
instances,
initRelation
instances
} from './util'

import parseBasePage from '../../../mp-weixin/runtime/wrapper/page-base-parser'

export default function parsePage (vuePageOptions) {
const pageOptions = parseBasePage(vuePageOptions, {
isPage,
initRelation
})
const pageOptions = parseBasePage(vuePageOptions)
// 页面需要在 ready 中触发,其他组件是在 handleLink 中触发
pageOptions.lifetimes.ready = function ready () {
if (this.$vm && this.$vm.mpType === 'page') {
Expand Down

0 comments on commit cdbb303

Please sign in to comment.