# 行为守卫
通过该API,开发者可以注册一个守卫。
TIP
“行为守卫”表示开发者可以在上下文的状态发生变化前(例如刷新、关闭、业务操作)进行拦截。
# 用法
# 自定义守卫
// comp_A.vue
<template>
<div>comp_A</div>
</template>
<script>
export default {
mounted() {
this.$emit.callHook('compA.say', () => {
alert('hello world');
})
}
}
</script>
// comp_B.vue
<template>
<div>comp_B</div>
</template>
<script>
export default {
mounted() {
this.$emit.tapHook('compA.say', (next) => {
// compA.say前一些逻辑
next();
})
}
}
</script>
# 系统守卫
例如:自定义组件想在详情页关闭前做执行一些逻辑
<template>
<div>自定义组件</div>
</template>
<script>
export default {
mounted() {
this.$emit.tapSystemHook('beforeHide', (next) => {
// todo what you want
next();
})
}
}
</script>
# API
# tapHook(name, beforeHandler)
参数:
name: String
:注册的守卫名称beforeHandler: Function
:守卫逻辑
用法:
注册自定义守卫。
this.$context.tapHook('action', (next) => {
// next动作之前的逻辑
next();
})
# callHook(name, handler)
参数:
name: String
:注册的守卫名称handler: Function
:正常的业务逻辑-被守卫的逻辑
用法:
调用自定义守卫。handler对应tapHook中beforeHandler接收到的next参数。
this.$context.callHook('action', () => {
// 实际的业务逻辑
})
# tapSystemHook(name, beforeHandler)
参数:
name: String
:注册的守卫名称beforeHandler: Function
:守卫逻辑
用法:
注册系统级守卫。
this.$context.tapSystemHook('action', (next) => {
// next动作之前的逻辑
next();
})
# 上下文行为守卫
以下是所有上下文支持的行为守卫,开发人员自行查阅。
# 对象详情
# beforeRefresh
用法:
拦截刷新
this.$context.tapSystemHook('beforeRefresh', (next) => {
next()
})
# beforeNext
用法:
拦截显示下一页
this.$context.tapSystemHook('beforeNext', (next) => {
next()
})
# beforePrev
用法:
拦截显示上一页
this.$context.tapSystemHook('beforePrev', (next) => {
next()
})
# beforeHide
用法:
拦截详情页隐藏
this.$context.tapSystemHook('beforeHide', (next) => {
next()
})
# beforeAction
用法:
拦截业务处理
this.$context.tapSystemHook('beforeAction', (next) => {
next()
})