# 行为守卫

通过该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()
})
lastUpdate: 5/3/2023, 11:40:26 PM