提交 cdbb3031 编写于 作者: Q qiang

fix: init lifetimes hook use ExtendedVue options

上级 c07b5391
......@@ -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
......
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
}
......@@ -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)
......@@ -164,5 +164,5 @@ export default function parseComponent (vueComponentOptions) {
})
}
return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
......@@ -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 => {
......
......@@ -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
......@@ -90,5 +90,5 @@ export default function parseComponent (vueOptions) {
}
delete componentOptions.methods.__l
return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
......@@ -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) {
......@@ -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 () {
......
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
}
......@@ -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 () {
// 暂不区分版本
......@@ -21,5 +21,5 @@ export default function parseComponent (vueComponentOptions) {
}
oldAttached.call(this)
}
return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
......@@ -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
......@@ -46,5 +49,5 @@ export default function parseComponent (vueOptions) {
componentOptions.methods.__l = handleLink
return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
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') {
......
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)
}
......@@ -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 顺序强制纠正
......@@ -87,5 +90,5 @@ export default function parseComponent (vueOptions) {
componentOptions.methods.__l = handleLink
return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
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 () {
......
......@@ -18,7 +18,7 @@ import {
export default function parseBaseComponent (vueComponentOptions, {
isPage,
initRelation
} = {}) {
} = {}, needVueOptions) {
const [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions)
const options = {
......@@ -110,6 +110,9 @@ export default function parseBaseComponent (vueComponentOptions, {
})
}
if (needVueOptions) {
return [componentOptions, vueOptions, VueComponent]
}
if (isPage) {
return componentOptions
}
......
......@@ -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)
}
......@@ -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
......
import parseBasePage from './page-base-parser'
import {
isPage,
initRelation
} from './util'
export default function parsePage (vuePageOptions) {
return parseBasePage(vuePageOptions, {
isPage,
initRelation
})
}
return parseBasePage(vuePageOptions)
}
......@@ -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 () {
// 暂不区分版本
......@@ -32,5 +32,5 @@ export default function parseComponent (vueComponentOptions) {
}
oldAttached.call(this)
}
return componentOptions
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
......@@ -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 => {
......
......@@ -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
......@@ -46,5 +49,5 @@ export default function parseComponent (vueOptions) {
componentOptions.methods.__l = handleLink
return componentOptions
}
return needVueOptions ? [componentOptions, vueOptions] : componentOptions
}
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') {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册