提交 d80ed2c2 编写于 作者: fxy060608's avatar fxy060608

fix(mp): improve hasHook #300

上级 9b63b254
...@@ -436,13 +436,21 @@ function initMocks (vm, mocks) { ...@@ -436,13 +436,21 @@ function initMocks (vm, mocks) {
function hasHook (hook, vueOptions) { function hasHook (hook, vueOptions) {
if (!vueOptions) { if (!vueOptions) {
return true return true
} }
vueOptions = vueOptions.default || vueOptions; vueOptions = vueOptions.default || vueOptions;
if (isFn(vueOptions)) { if (isFn(vueOptions)) {
vueOptions = vueOptions.extendOptions; if (isFn(vueOptions.extendOptions[hook])) {
} return true
}
if (vueOptions.super &&
vueOptions.super.options &&
Array.isArray(vueOptions.super.options[hook])) {
return true
}
return false
}
if (isFn(vueOptions[hook])) { if (isFn(vueOptions[hook])) {
return true return true
...@@ -455,13 +463,13 @@ function hasHook (hook, vueOptions) { ...@@ -455,13 +463,13 @@ function hasHook (hook, vueOptions) {
function initHooks (mpOptions, hooks, vueOptions) { function initHooks (mpOptions, hooks, vueOptions) {
hooks.forEach(hook => { hooks.forEach(hook => {
if (hasHook(hook, vueOptions)) { if (hasHook(hook, vueOptions)) {
mpOptions[hook] = function (args) { mpOptions[hook] = function (args) {
return this.$vm && this.$vm.__call_hook(hook, args) return this.$vm && this.$vm.__call_hook(hook, args)
}; };
} }
}); });
} }
function initVueComponent (Vue$$1, vueOptions) { function initVueComponent (Vue$$1, vueOptions) {
vueOptions = vueOptions.default || vueOptions; vueOptions = vueOptions.default || vueOptions;
...@@ -867,18 +875,18 @@ function handleEvent (event) { ...@@ -867,18 +875,18 @@ function handleEvent (event) {
}); });
} }
const hooks = [ const hooks = [
'onShow', 'onShow',
'onHide', 'onHide',
'onError', 'onError',
'onPageNotFound' 'onPageNotFound'
]; ];
function parseBaseApp (vm, { function parseBaseApp (vm, {
mocks, mocks,
initRefs initRefs
}) { }) {
Vue.prototype.mpHost = "app-plus"; Vue.prototype.mpHost = "app-plus";
Vue.mixin({ Vue.mixin({
beforeCreate () { beforeCreate () {
...@@ -907,6 +915,9 @@ function parseBaseApp (vm, { ...@@ -907,6 +915,9 @@ function parseBaseApp (vm, {
const appOptions = { const appOptions = {
onLaunch (args) { onLaunch (args) {
if (this.$vm) { // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前
return
}
this.$vm = vm; this.$vm = vm;
......
{ {
"name": "@dcloudio/uni-app-plus", "name": "@dcloudio/uni-app-plus",
"version": "0.0.242", "version": "0.0.243",
"description": "uni-app app-plus", "description": "uni-app app-plus",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
......
...@@ -755,13 +755,21 @@ function initMocks (vm, mocks) { ...@@ -755,13 +755,21 @@ function initMocks (vm, mocks) {
function hasHook (hook, vueOptions) { function hasHook (hook, vueOptions) {
if (!vueOptions) { if (!vueOptions) {
return true return true
} }
vueOptions = vueOptions.default || vueOptions; vueOptions = vueOptions.default || vueOptions;
if (isFn(vueOptions)) { if (isFn(vueOptions)) {
vueOptions = vueOptions.extendOptions; if (isFn(vueOptions.extendOptions[hook])) {
} return true
}
if (vueOptions.super &&
vueOptions.super.options &&
Array.isArray(vueOptions.super.options[hook])) {
return true
}
return false
}
if (isFn(vueOptions[hook])) { if (isFn(vueOptions[hook])) {
return true return true
...@@ -774,13 +782,13 @@ function hasHook (hook, vueOptions) { ...@@ -774,13 +782,13 @@ function hasHook (hook, vueOptions) {
function initHooks (mpOptions, hooks, vueOptions) { function initHooks (mpOptions, hooks, vueOptions) {
hooks.forEach(hook => { hooks.forEach(hook => {
if (hasHook(hook, vueOptions)) { if (hasHook(hook, vueOptions)) {
mpOptions[hook] = function (args) { mpOptions[hook] = function (args) {
return this.$vm && this.$vm.__call_hook(hook, args) return this.$vm && this.$vm.__call_hook(hook, args)
}; };
} }
}); });
} }
function initVueComponent (Vue$$1, vueOptions) { function initVueComponent (Vue$$1, vueOptions) {
vueOptions = vueOptions.default || vueOptions; vueOptions = vueOptions.default || vueOptions;
...@@ -1176,18 +1184,18 @@ function handleEvent (event) { ...@@ -1176,18 +1184,18 @@ function handleEvent (event) {
}); });
} }
const hooks = [ const hooks = [
'onShow', 'onShow',
'onHide', 'onHide',
'onError', 'onError',
'onPageNotFound' 'onPageNotFound'
]; ];
function parseBaseApp (vm, { function parseBaseApp (vm, {
mocks, mocks,
initRefs initRefs
}) { }) {
Vue.prototype.mpHost = "mp-alipay"; Vue.prototype.mpHost = "mp-alipay";
Vue.mixin({ Vue.mixin({
beforeCreate () { beforeCreate () {
...@@ -1216,6 +1224,9 @@ function parseBaseApp (vm, { ...@@ -1216,6 +1224,9 @@ function parseBaseApp (vm, {
const appOptions = { const appOptions = {
onLaunch (args) { onLaunch (args) {
if (this.$vm) { // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前
return
}
this.$vm = vm; this.$vm = vm;
......
{ {
"name": "@dcloudio/uni-mp-alipay", "name": "@dcloudio/uni-mp-alipay",
"version": "0.0.816", "version": "0.0.817",
"description": "uni-app mp-alipay", "description": "uni-app mp-alipay",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
......
...@@ -536,13 +536,21 @@ function initMocks (vm, mocks) { ...@@ -536,13 +536,21 @@ function initMocks (vm, mocks) {
function hasHook (hook, vueOptions) { function hasHook (hook, vueOptions) {
if (!vueOptions) { if (!vueOptions) {
return true return true
} }
vueOptions = vueOptions.default || vueOptions; vueOptions = vueOptions.default || vueOptions;
if (isFn(vueOptions)) { if (isFn(vueOptions)) {
vueOptions = vueOptions.extendOptions; if (isFn(vueOptions.extendOptions[hook])) {
} return true
}
if (vueOptions.super &&
vueOptions.super.options &&
Array.isArray(vueOptions.super.options[hook])) {
return true
}
return false
}
if (isFn(vueOptions[hook])) { if (isFn(vueOptions[hook])) {
return true return true
...@@ -555,13 +563,13 @@ function hasHook (hook, vueOptions) { ...@@ -555,13 +563,13 @@ function hasHook (hook, vueOptions) {
function initHooks (mpOptions, hooks, vueOptions) { function initHooks (mpOptions, hooks, vueOptions) {
hooks.forEach(hook => { hooks.forEach(hook => {
if (hasHook(hook, vueOptions)) { if (hasHook(hook, vueOptions)) {
mpOptions[hook] = function (args) { mpOptions[hook] = function (args) {
return this.$vm && this.$vm.__call_hook(hook, args) return this.$vm && this.$vm.__call_hook(hook, args)
}; };
} }
}); });
} }
function initVueComponent (Vue$$1, vueOptions) { function initVueComponent (Vue$$1, vueOptions) {
vueOptions = vueOptions.default || vueOptions; vueOptions = vueOptions.default || vueOptions;
......
{ {
"name": "@dcloudio/uni-mp-baidu", "name": "@dcloudio/uni-mp-baidu",
"version": "0.0.843", "version": "0.0.844",
"description": "uni-app mp-baidu", "description": "uni-app mp-baidu",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
......
...@@ -500,13 +500,21 @@ function initMocks (vm, mocks) { ...@@ -500,13 +500,21 @@ function initMocks (vm, mocks) {
function hasHook (hook, vueOptions) { function hasHook (hook, vueOptions) {
if (!vueOptions) { if (!vueOptions) {
return true return true
} }
vueOptions = vueOptions.default || vueOptions; vueOptions = vueOptions.default || vueOptions;
if (isFn(vueOptions)) { if (isFn(vueOptions)) {
vueOptions = vueOptions.extendOptions; if (isFn(vueOptions.extendOptions[hook])) {
} return true
}
if (vueOptions.super &&
vueOptions.super.options &&
Array.isArray(vueOptions.super.options[hook])) {
return true
}
return false
}
if (isFn(vueOptions[hook])) { if (isFn(vueOptions[hook])) {
return true return true
...@@ -519,13 +527,13 @@ function hasHook (hook, vueOptions) { ...@@ -519,13 +527,13 @@ function hasHook (hook, vueOptions) {
function initHooks (mpOptions, hooks, vueOptions) { function initHooks (mpOptions, hooks, vueOptions) {
hooks.forEach(hook => { hooks.forEach(hook => {
if (hasHook(hook, vueOptions)) { if (hasHook(hook, vueOptions)) {
mpOptions[hook] = function (args) { mpOptions[hook] = function (args) {
return this.$vm && this.$vm.__call_hook(hook, args) return this.$vm && this.$vm.__call_hook(hook, args)
}; };
} }
}); });
} }
function initVueComponent (Vue$$1, vueOptions) { function initVueComponent (Vue$$1, vueOptions) {
vueOptions = vueOptions.default || vueOptions; vueOptions = vueOptions.default || vueOptions;
...@@ -931,18 +939,18 @@ function handleEvent (event) { ...@@ -931,18 +939,18 @@ function handleEvent (event) {
}); });
} }
const hooks = [ const hooks = [
'onShow', 'onShow',
'onHide', 'onHide',
'onError', 'onError',
'onPageNotFound' 'onPageNotFound'
]; ];
function parseBaseApp (vm, { function parseBaseApp (vm, {
mocks, mocks,
initRefs initRefs
}) { }) {
Vue.prototype.mpHost = "mp-qq"; Vue.prototype.mpHost = "mp-qq";
Vue.mixin({ Vue.mixin({
beforeCreate () { beforeCreate () {
...@@ -971,6 +979,9 @@ function parseBaseApp (vm, { ...@@ -971,6 +979,9 @@ function parseBaseApp (vm, {
const appOptions = { const appOptions = {
onLaunch (args) { onLaunch (args) {
if (this.$vm) { // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前
return
}
this.$vm = vm; this.$vm = vm;
......
{ {
"name": "@dcloudio/uni-mp-qq", "name": "@dcloudio/uni-mp-qq",
"version": "0.0.100", "version": "0.0.101",
"description": "uni-app mp-qq", "description": "uni-app mp-qq",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
......
...@@ -581,13 +581,21 @@ function initMocks (vm, mocks) { ...@@ -581,13 +581,21 @@ function initMocks (vm, mocks) {
function hasHook (hook, vueOptions) { function hasHook (hook, vueOptions) {
if (!vueOptions) { if (!vueOptions) {
return true return true
} }
vueOptions = vueOptions.default || vueOptions; vueOptions = vueOptions.default || vueOptions;
if (isFn(vueOptions)) { if (isFn(vueOptions)) {
vueOptions = vueOptions.extendOptions; if (isFn(vueOptions.extendOptions[hook])) {
} return true
}
if (vueOptions.super &&
vueOptions.super.options &&
Array.isArray(vueOptions.super.options[hook])) {
return true
}
return false
}
if (isFn(vueOptions[hook])) { if (isFn(vueOptions[hook])) {
return true return true
...@@ -600,13 +608,13 @@ function hasHook (hook, vueOptions) { ...@@ -600,13 +608,13 @@ function hasHook (hook, vueOptions) {
function initHooks (mpOptions, hooks, vueOptions) { function initHooks (mpOptions, hooks, vueOptions) {
hooks.forEach(hook => { hooks.forEach(hook => {
if (hasHook(hook, vueOptions)) { if (hasHook(hook, vueOptions)) {
mpOptions[hook] = function (args) { mpOptions[hook] = function (args) {
return this.$vm && this.$vm.__call_hook(hook, args) return this.$vm && this.$vm.__call_hook(hook, args)
}; };
} }
}); });
} }
function initVueComponent (Vue$$1, vueOptions) { function initVueComponent (Vue$$1, vueOptions) {
vueOptions = vueOptions.default || vueOptions; vueOptions = vueOptions.default || vueOptions;
...@@ -1012,18 +1020,18 @@ function handleEvent (event) { ...@@ -1012,18 +1020,18 @@ function handleEvent (event) {
}); });
} }
const hooks = [ const hooks = [
'onShow', 'onShow',
'onHide', 'onHide',
'onError', 'onError',
'onPageNotFound' 'onPageNotFound'
]; ];
function parseBaseApp (vm, { function parseBaseApp (vm, {
mocks, mocks,
initRefs initRefs
}) { }) {
Vue.prototype.mpHost = "mp-toutiao"; Vue.prototype.mpHost = "mp-toutiao";
Vue.mixin({ Vue.mixin({
beforeCreate () { beforeCreate () {
...@@ -1052,6 +1060,9 @@ function parseBaseApp (vm, { ...@@ -1052,6 +1060,9 @@ function parseBaseApp (vm, {
const appOptions = { const appOptions = {
onLaunch (args) { onLaunch (args) {
if (this.$vm) { // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前
return
}
this.$vm = vm; this.$vm = vm;
......
{ {
"name": "@dcloudio/uni-mp-toutiao", "name": "@dcloudio/uni-mp-toutiao",
"version": "0.0.340", "version": "0.0.341",
"description": "uni-app mp-toutiao", "description": "uni-app mp-toutiao",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
......
...@@ -438,13 +438,21 @@ function initMocks (vm, mocks) { ...@@ -438,13 +438,21 @@ function initMocks (vm, mocks) {
function hasHook (hook, vueOptions) { function hasHook (hook, vueOptions) {
if (!vueOptions) { if (!vueOptions) {
return true return true
} }
vueOptions = vueOptions.default || vueOptions; vueOptions = vueOptions.default || vueOptions;
if (isFn(vueOptions)) { if (isFn(vueOptions)) {
vueOptions = vueOptions.extendOptions; if (isFn(vueOptions.extendOptions[hook])) {
} return true
}
if (vueOptions.super &&
vueOptions.super.options &&
Array.isArray(vueOptions.super.options[hook])) {
return true
}
return false
}
if (isFn(vueOptions[hook])) { if (isFn(vueOptions[hook])) {
return true return true
...@@ -457,13 +465,13 @@ function hasHook (hook, vueOptions) { ...@@ -457,13 +465,13 @@ function hasHook (hook, vueOptions) {
function initHooks (mpOptions, hooks, vueOptions) { function initHooks (mpOptions, hooks, vueOptions) {
hooks.forEach(hook => { hooks.forEach(hook => {
if (hasHook(hook, vueOptions)) { if (hasHook(hook, vueOptions)) {
mpOptions[hook] = function (args) { mpOptions[hook] = function (args) {
return this.$vm && this.$vm.__call_hook(hook, args) return this.$vm && this.$vm.__call_hook(hook, args)
}; };
} }
}); });
} }
function initVueComponent (Vue$$1, vueOptions) { function initVueComponent (Vue$$1, vueOptions) {
vueOptions = vueOptions.default || vueOptions; vueOptions = vueOptions.default || vueOptions;
...@@ -869,18 +877,18 @@ function handleEvent (event) { ...@@ -869,18 +877,18 @@ function handleEvent (event) {
}); });
} }
const hooks = [ const hooks = [
'onShow', 'onShow',
'onHide', 'onHide',
'onError', 'onError',
'onPageNotFound' 'onPageNotFound'
]; ];
function parseBaseApp (vm, { function parseBaseApp (vm, {
mocks, mocks,
initRefs initRefs
}) { }) {
Vue.prototype.mpHost = "mp-weixin"; Vue.prototype.mpHost = "mp-weixin";
Vue.mixin({ Vue.mixin({
beforeCreate () { beforeCreate () {
...@@ -909,6 +917,9 @@ function parseBaseApp (vm, { ...@@ -909,6 +917,9 @@ function parseBaseApp (vm, {
const appOptions = { const appOptions = {
onLaunch (args) { onLaunch (args) {
if (this.$vm) { // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前
return
}
{ {
if (!wx.canIUse('nextTick')) { // 事实 上2.2.3 即可,简单使用 2.3.0 的 nextTick 判断 if (!wx.canIUse('nextTick')) { // 事实 上2.2.3 即可,简单使用 2.3.0 的 nextTick 判断
console.error('当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上'); console.error('当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上');
......
{ {
"name": "@dcloudio/uni-mp-weixin", "name": "@dcloudio/uni-mp-weixin",
"version": "0.0.961", "version": "0.0.962",
"description": "uni-app mp-weixin", "description": "uni-app mp-weixin",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
......
...@@ -26,13 +26,21 @@ export function initMocks (vm, mocks) { ...@@ -26,13 +26,21 @@ export function initMocks (vm, mocks) {
function hasHook (hook, vueOptions) { function hasHook (hook, vueOptions) {
if (!vueOptions) { if (!vueOptions) {
return true return true
} }
vueOptions = vueOptions.default || vueOptions vueOptions = vueOptions.default || vueOptions
if (isFn(vueOptions)) { if (isFn(vueOptions)) {
vueOptions = vueOptions.extendOptions if (isFn(vueOptions.extendOptions[hook])) {
} return true
}
if (vueOptions.super &&
vueOptions.super.options &&
Array.isArray(vueOptions.super.options[hook])) {
return true
}
return false
}
if (isFn(vueOptions[hook])) { if (isFn(vueOptions[hook])) {
return true return true
...@@ -45,13 +53,13 @@ function hasHook (hook, vueOptions) { ...@@ -45,13 +53,13 @@ function hasHook (hook, vueOptions) {
export function initHooks (mpOptions, hooks, vueOptions) { export function initHooks (mpOptions, hooks, vueOptions) {
hooks.forEach(hook => { hooks.forEach(hook => {
if (hasHook(hook, vueOptions)) { if (hasHook(hook, vueOptions)) {
mpOptions[hook] = function (args) { mpOptions[hook] = function (args) {
return this.$vm && this.$vm.__call_hook(hook, args) return this.$vm && this.$vm.__call_hook(hook, args)
} }
} }
}) })
} }
export function initVueComponent (Vue, vueOptions) { export function initVueComponent (Vue, vueOptions) {
vueOptions = vueOptions.default || vueOptions vueOptions = vueOptions.default || vueOptions
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册