智能照明系统APP-本地串口
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
LightingSystemApp-serial/.svn/pristine/fe/fe4699e961e9c3602e9cb3cbaa1...

105 lines
2.5 KiB

/* @flow */
const LIFECYCLE_HOOKS = [
// App
'onLaunch',
'onShow',
'onHide',
'onUniNViewMessage',
'onPageNotFound',
'onThemeChange',
'onError',
'onUnhandledRejection',
// Page
'onLoad',
// 'onShow',
'onReady',
// 'onHide',
'onUnload',
'onPullDownRefresh',
'onReachBottom',
'onTabItemTap',
'onAddToFavorites',
'onShareTimeline',
'onShareAppMessage',
'onResize',
'onPageScroll',
'onNavigationBarButtonTap',
'onBackPress',
'onNavigationBarSearchInputChanged',
'onNavigationBarSearchInputConfirmed',
'onNavigationBarSearchInputClicked',
'onNavigationBarSearchInputFocusChanged',
// Component
// 'onReady', // 兼容旧版本,应该移除该事件
'onPageShow',
'onPageHide',
'onPageResize',
// 小程序的 created,attached 生命周期(需要在 service 层的 Vue 内核 mounted 时触发,因小程序 created 可以使用 selectComponent)
'onServiceCreated',
'onServiceAttached'
]
const KEYS = ['data', 'properties', 'options', 'relations']
function mergeObject (ret, fromVal, key) {
if (fromVal[key]) {
Object.assign((ret[key] || (ret[key] = {})), fromVal[key])
}
}
function mergeArray (toArray, fromArray) {
toArray.push(...fromArray)
}
function mergeOptions (ret, toVal) {
KEYS.forEach(key => {
mergeObject(ret, toVal, key)
})
if (toVal.externalClasses) {
mergeArray((ret.externalClasses || (ret.externalClasses = [])), toVal.externalClasses)
}
if (toVal.path) {
ret.path = toVal.path
}
}
export function lifecycleMixin (Vue) {
// fixed vue-class-component
const oldExtend = Vue.extend
Vue.extend = function (extendOptions) {
extendOptions = extendOptions || {}
const methods = extendOptions.methods
if (methods) {
Object.keys(methods).forEach(methodName => {
if (LIFECYCLE_HOOKS.indexOf(methodName) !== -1) {
extendOptions[methodName] = methods[methodName]
delete methods[methodName]
}
})
}
return oldExtend.call(this, extendOptions)
}
const strategies = Vue.config.optionMergeStrategies
const mergeHook = strategies.created
LIFECYCLE_HOOKS.forEach(hook => {
strategies[hook] = mergeHook
})
// mp runtime
strategies.mpOptions = function (toVal, fromVal) {
// data,properties,options,externalClasses,relations,path
if (!toVal) {
return fromVal
}
const ret = Object.create(null)
mergeOptions(ret, toVal)
if (fromVal) {
mergeOptions(ret, fromVal)
}
return ret
}
}