提交 cdbb3031 编写于 作者: Q qiang

fix: init lifetimes hook use ExtendedVue options

上级 c07b5391
...@@ -50,7 +50,7 @@ function hasHook (hook, vueOptions) { ...@@ -50,7 +50,7 @@ function hasHook (hook, vueOptions) {
return false return false
} }
if (isFn(vueOptions[hook])) { if (isFn(vueOptions[hook]) || Array.isArray(vueOptions[hook])) {
return true return true
} }
const mixins = vueOptions.mixins const mixins = vueOptions.mixins
......
import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-parser' import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-parser'
export default function parseComponent (vueComponentOptions) { export default function parseComponent (vueComponentOptions, needVueOptions) {
const componentOptions = parseBaseComponent(vueComponentOptions) const [componentOptions, vueOptions] = parseBaseComponent(vueComponentOptions, true)
componentOptions.methods.$getAppWebview = function () { componentOptions.methods.$getAppWebview = function () {
return plus.webview.getWebviewById(`${this.__wxWebviewId__}`) return plus.webview.getWebviewById(`${this.__wxWebviewId__}`)
} }
return componentOptions return needVueOptions ? [componentOptions, vueOptions] : componentOptions
} }
...@@ -101,7 +101,7 @@ function initVm (VueComponent) { ...@@ -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 [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions)
const properties = initProperties(vueOptions.props, false, vueOptions.__file) const properties = initProperties(vueOptions.props, false, vueOptions.__file)
...@@ -164,5 +164,5 @@ export default function parseComponent (vueComponentOptions) { ...@@ -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) { ...@@ -93,10 +93,10 @@ export default function parsePage (vuePageOptions) {
triggerEvent triggerEvent
} }
Object.assign(pageOptions.events, vuePageOptions.events || {}) Object.assign(pageOptions.events, vueOptions.events || {})
initHooks(pageOptions, hooks, vuePageOptions) initHooks(pageOptions, hooks, vueOptions)
initUnknownHooks(pageOptions, vuePageOptions, ['onReady']) initUnknownHooks(pageOptions, vueOptions, ['onReady'])
if (Array.isArray(vueOptions.wxsCallMethods)) { if (Array.isArray(vueOptions.wxsCallMethods)) {
vueOptions.wxsCallMethods.forEach(callMethod => { vueOptions.wxsCallMethods.forEach(callMethod => {
......
...@@ -25,11 +25,11 @@ import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-bas ...@@ -25,11 +25,11 @@ import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-bas
const newLifecycle = swan.canIUse('lifecycle-2-0') const newLifecycle = swan.canIUse('lifecycle-2-0')
export default function parseComponent (vueOptions) { export default function parseComponent (vueComponentOptions, needVueOptions) {
const componentOptions = parseBaseComponent(vueOptions, { const [componentOptions, vueOptions] = parseBaseComponent(vueComponentOptions, {
isPage, isPage,
initRelation initRelation
}) }, true)
// 关于百度小程序生命周期的说明(组件作为页面时): // 关于百度小程序生命周期的说明(组件作为页面时):
// lifetimes:attached --> methods:onShow --> methods:onLoad --> methods:onReady // lifetimes:attached --> methods:onShow --> methods:onLoad --> methods:onReady
...@@ -90,5 +90,5 @@ export default function parseComponent (vueOptions) { ...@@ -90,5 +90,5 @@ export default function parseComponent (vueOptions) {
} }
delete componentOptions.methods.__l delete componentOptions.methods.__l
return componentOptions return needVueOptions ? [componentOptions, vueOptions] : componentOptions
} }
...@@ -2,11 +2,6 @@ import { ...@@ -2,11 +2,6 @@ import {
stringifyQuery stringifyQuery
} from 'uni-shared/query' } from 'uni-shared/query'
import {
isPage,
initRelation
} from './util'
import parseBasePage from '../../../mp-weixin/runtime/wrapper/page-base-parser' import parseBasePage from '../../../mp-weixin/runtime/wrapper/page-base-parser'
function detached ($vm) { function detached ($vm) {
...@@ -24,10 +19,7 @@ function onPageUnload ($vm) { ...@@ -24,10 +19,7 @@ function onPageUnload ($vm) {
} }
export default function parsePage (vuePageOptions) { export default function parsePage (vuePageOptions) {
const pageOptions = parseBasePage(vuePageOptions, { const pageOptions = parseBasePage(vuePageOptions)
isPage,
initRelation
})
// 纠正百度小程序生命周期methods:onShow在methods:onLoad之前触发的问题 // 纠正百度小程序生命周期methods:onShow在methods:onLoad之前触发的问题
pageOptions.methods.onShow = function onShow () { pageOptions.methods.onShow = function onShow () {
......
import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-parser' import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-parser'
export default function parseComponent (vueComponentOptions) { export default function parseComponent (vueComponentOptions, needVueOptions) {
const componentOptions = parseBaseComponent(vueComponentOptions) const [componentOptions, vueOptions] = parseBaseComponent(vueComponentOptions, true)
// 京东小程序 lifetimes 存在兼容问题 // 京东小程序 lifetimes 存在兼容问题
const lifetimes = componentOptions.lifetimes const lifetimes = componentOptions.lifetimes
Object.keys(lifetimes).forEach(key => { Object.keys(lifetimes).forEach(key => {
componentOptions[key] = lifetimes[key] componentOptions[key] = lifetimes[key]
}) })
return componentOptions return needVueOptions ? [componentOptions, vueOptions] : componentOptions
} }
...@@ -7,8 +7,8 @@ import { ...@@ -7,8 +7,8 @@ import {
fixSetDataEnd fixSetDataEnd
} from '../../../mp-weixin/runtime/wrapper/fix-set-data' } from '../../../mp-weixin/runtime/wrapper/fix-set-data'
export default function parseComponent (vueComponentOptions) { export default function parseComponent (vueComponentOptions, needVueOptions) {
const componentOptions = parseBaseComponent(vueComponentOptions) const [componentOptions, vueOptions] = parseBaseComponent(vueComponentOptions, true)
const oldAttached = componentOptions.lifetimes.attached const oldAttached = componentOptions.lifetimes.attached
componentOptions.lifetimes.attached = function attached () { componentOptions.lifetimes.attached = function attached () {
// 暂不区分版本 // 暂不区分版本
...@@ -21,5 +21,5 @@ export default function parseComponent (vueComponentOptions) { ...@@ -21,5 +21,5 @@ export default function parseComponent (vueComponentOptions) {
} }
oldAttached.call(this) oldAttached.call(this)
} }
return componentOptions return needVueOptions ? [componentOptions, vueOptions] : componentOptions
} }
...@@ -11,8 +11,11 @@ import { ...@@ -11,8 +11,11 @@ import {
import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-base-parser' import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-base-parser'
export default function parseComponent (vueOptions) { export default function parseComponent (vueComponentOptions, needVueOptions) {
const [componentOptions, VueComponent] = parseBaseComponent(vueOptions) const [componentOptions, vueOptions, VueComponent] = parseBaseComponent(vueComponentOptions, {
isPage,
initRelation
}, true)
componentOptions.lifetimes.attached = function attached () { componentOptions.lifetimes.attached = function attached () {
const properties = this.properties const properties = this.properties
...@@ -46,5 +49,5 @@ export default function parseComponent (vueOptions) { ...@@ -46,5 +49,5 @@ export default function parseComponent (vueOptions) {
componentOptions.methods.__l = handleLink componentOptions.methods.__l = handleLink
return componentOptions return needVueOptions ? [componentOptions, vueOptions] : componentOptions
} }
import { import {
isPage, instances
instances,
initRelation
} from './util' } from './util'
import parseBasePage from '../../../mp-weixin/runtime/wrapper/page-base-parser' import parseBasePage from '../../../mp-weixin/runtime/wrapper/page-base-parser'
export default function parsePage (vuePageOptions) { export default function parsePage (vuePageOptions) {
const pageOptions = parseBasePage(vuePageOptions, { const pageOptions = parseBasePage(vuePageOptions)
isPage,
initRelation
})
// 页面需要在 ready 中触发,其他组件是在 handleLink 中触发 // 页面需要在 ready 中触发,其他组件是在 handleLink 中触发
pageOptions.lifetimes.ready = function ready () { pageOptions.lifetimes.ready = function ready () {
if (this.$vm && this.$vm.mpType === 'page') { if (this.$vm && this.$vm.mpType === 'page') {
......
import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-parser' import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-parser'
export default function parseComponent (vueComponentOptions) { export default function parseComponent (vueComponentOptions, needVueOptions) {
return parseBaseComponent(vueComponentOptions) return parseBaseComponent(vueComponentOptions, needVueOptions)
} }
...@@ -20,8 +20,11 @@ function currentComponents (mpInstance, callback) { ...@@ -20,8 +20,11 @@ function currentComponents (mpInstance, callback) {
} }
} }
export default function parseComponent (vueOptions) { export default function parseComponent (vueComponentOptions, needVueOptions) {
const [componentOptions, VueComponent] = parseBaseComponent(vueOptions) const [componentOptions, vueOptions, VueComponent] = parseBaseComponent(vueComponentOptions, {
isPage,
initRelation
}, true)
const lifetimes = componentOptions.lifetimes const lifetimes = componentOptions.lifetimes
// 基础库 2.0 以上 attached 顺序错乱,按照 created 顺序强制纠正 // 基础库 2.0 以上 attached 顺序错乱,按照 created 顺序强制纠正
...@@ -87,5 +90,5 @@ export default function parseComponent (vueOptions) { ...@@ -87,5 +90,5 @@ export default function parseComponent (vueOptions) {
componentOptions.methods.__l = handleLink componentOptions.methods.__l = handleLink
return componentOptions return needVueOptions ? [componentOptions, vueOptions] : componentOptions
} }
import { import {
isPage,
instances, instances,
components, components
initRelation
} from './util' } from './util'
import parseBasePage from '../../../mp-weixin/runtime/wrapper/page-base-parser' import parseBasePage from '../../../mp-weixin/runtime/wrapper/page-base-parser'
export default function parsePage (vuePageOptions) { export default function parsePage (vuePageOptions) {
const pageOptions = parseBasePage(vuePageOptions, { const pageOptions = parseBasePage(vuePageOptions)
isPage,
initRelation
})
const lifetimes = pageOptions.lifetimes const lifetimes = pageOptions.lifetimes
const oldCreated = lifetimes.created const oldCreated = lifetimes.created
lifetimes.created = function created () { lifetimes.created = function created () {
......
...@@ -18,7 +18,7 @@ import { ...@@ -18,7 +18,7 @@ import {
export default function parseBaseComponent (vueComponentOptions, { export default function parseBaseComponent (vueComponentOptions, {
isPage, isPage,
initRelation initRelation
} = {}) { } = {}, needVueOptions) {
const [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions) const [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions)
const options = { const options = {
...@@ -110,6 +110,9 @@ export default function parseBaseComponent (vueComponentOptions, { ...@@ -110,6 +110,9 @@ export default function parseBaseComponent (vueComponentOptions, {
}) })
} }
if (needVueOptions) {
return [componentOptions, vueOptions, VueComponent]
}
if (isPage) { if (isPage) {
return componentOptions return componentOptions
} }
......
...@@ -5,9 +5,9 @@ import { ...@@ -5,9 +5,9 @@ import {
initRelation initRelation
} from './util' } from './util'
export default function parseComponent (vueComponentOptions) { export default function parseComponent (vueComponentOptions, needVueOptions) {
return parseBaseComponent(vueComponentOptions, { return parseBaseComponent(vueComponentOptions, {
isPage, isPage,
initRelation initRelation
}) }, needVueOptions)
} }
...@@ -18,16 +18,10 @@ const hooks = [ ...@@ -18,16 +18,10 @@ const hooks = [
hooks.push(...PAGE_EVENT_HOOKS) hooks.push(...PAGE_EVENT_HOOKS)
export default function parseBasePage (vuePageOptions, { export default function parseBasePage (vuePageOptions) {
isPage, const [pageOptions, vueOptions] = parseComponent(vuePageOptions, true)
initRelation
}) { initHooks(pageOptions.methods, hooks, vueOptions)
const pageOptions = parseComponent(vuePageOptions, {
isPage,
initRelation
})
initHooks(pageOptions.methods, hooks, vuePageOptions)
pageOptions.methods.onLoad = function (query) { pageOptions.methods.onLoad = function (query) {
this.options = query this.options = query
......
import parseBasePage from './page-base-parser' import parseBasePage from './page-base-parser'
import {
isPage,
initRelation
} from './util'
export default function parsePage (vuePageOptions) { export default function parsePage (vuePageOptions) {
return parseBasePage(vuePageOptions, { return parseBasePage(vuePageOptions)
isPage, }
initRelation
})
}
...@@ -19,8 +19,8 @@ import { ...@@ -19,8 +19,8 @@ import {
fixSetDataEnd fixSetDataEnd
} from '../../../mp-weixin/runtime/wrapper/fix-set-data' } from '../../../mp-weixin/runtime/wrapper/fix-set-data'
export default function parseComponent (vueComponentOptions) { export default function parseComponent (vueComponentOptions, needVueOptions) {
const componentOptions = parseBaseComponent(vueComponentOptions) const [componentOptions, vueOptions] = parseBaseComponent(vueComponentOptions, true)
const oldAttached = componentOptions.lifetimes.attached const oldAttached = componentOptions.lifetimes.attached
componentOptions.lifetimes.attached = function attached () { componentOptions.lifetimes.attached = function attached () {
// 暂不区分版本 // 暂不区分版本
...@@ -32,5 +32,5 @@ export default function parseComponent (vueComponentOptions) { ...@@ -32,5 +32,5 @@ export default function parseComponent (vueComponentOptions) {
} }
oldAttached.call(this) oldAttached.call(this)
} }
return componentOptions return needVueOptions ? [componentOptions, vueOptions] : componentOptions
} }
...@@ -80,8 +80,8 @@ export default function parsePage (vuePageOptions) { ...@@ -80,8 +80,8 @@ export default function parsePage (vuePageOptions) {
triggerEvent: function noop () {} triggerEvent: function noop () {}
} }
initHooks(pageOptions, hooks, vuePageOptions) initHooks(pageOptions, hooks, vueOptions)
initUnknownHooks(pageOptions, vuePageOptions, ['onReady']) initUnknownHooks(pageOptions, vueOptions, ['onReady'])
if (Array.isArray(vueOptions.wxsCallMethods)) { if (Array.isArray(vueOptions.wxsCallMethods)) {
vueOptions.wxsCallMethods.forEach(callMethod => { vueOptions.wxsCallMethods.forEach(callMethod => {
......
...@@ -11,8 +11,11 @@ import { ...@@ -11,8 +11,11 @@ import {
import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-base-parser' import parseBaseComponent from '../../../mp-weixin/runtime/wrapper/component-base-parser'
export default function parseComponent (vueOptions) { export default function parseComponent (vueComponentOptions, needVueOptions) {
const [componentOptions, VueComponent] = parseBaseComponent(vueOptions) const [componentOptions, vueOptions, VueComponent] = parseBaseComponent(vueComponentOptions, {
isPage,
initRelation
}, true)
componentOptions.lifetimes.attached = function attached () { componentOptions.lifetimes.attached = function attached () {
const properties = this.properties const properties = this.properties
...@@ -46,5 +49,5 @@ export default function parseComponent (vueOptions) { ...@@ -46,5 +49,5 @@ export default function parseComponent (vueOptions) {
componentOptions.methods.__l = handleLink componentOptions.methods.__l = handleLink
return componentOptions return needVueOptions ? [componentOptions, vueOptions] : componentOptions
} }
import { import {
isPage, instances
instances,
initRelation
} from './util' } from './util'
import parseBasePage from '../../../mp-weixin/runtime/wrapper/page-base-parser' import parseBasePage from '../../../mp-weixin/runtime/wrapper/page-base-parser'
export default function parsePage (vuePageOptions) { export default function parsePage (vuePageOptions) {
const pageOptions = parseBasePage(vuePageOptions, { const pageOptions = parseBasePage(vuePageOptions)
isPage,
initRelation
})
// 页面需要在 ready 中触发,其他组件是在 handleLink 中触发 // 页面需要在 ready 中触发,其他组件是在 handleLink 中触发
pageOptions.lifetimes.ready = function ready () { pageOptions.lifetimes.ready = function ready () {
if (this.$vm && this.$vm.mpType === 'page') { if (this.$vm && this.$vm.mpType === 'page') {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册