vue + typescript 开发环境
组件内无法调用路由钩子:beforeRouterEnter等守卫
需要向Component注册hooks
import { Vue, Component } from "vue-property-decorator";
import { Divider } from "ant-design-vue";
import { RouteConfig } from "vue-router";
import { getUserList } from "@/api/user/user";
//registerHooks.js
// 可以将注册钩子的代码,抽取公共代码
Component.registerHooks([
"beforeRouteEnter",
"beforeRouteLeave",
"beforeRouteUpdate"
]);
@Component({
components: {
ADivider: Divider,
},
// 用法2
// beforeRouteEnter(to, from, next) {
// console.log("组件内守卫");
// console.log(this); // 进入组件之前未被实例化,无法访问this
// }
})
export default class NAME extends Vue {
// 用法1
// typescript 暂时不熟练,写法可能不是最优。
beforeRouteEnter(to: RouteConfig, from: RouteConfig, next: Function): void {
console.log("组件内守卫");
console.log(this); // 进入组件之前未被实例化,无法直接访问this
next((vm: object) => {
console.log(vm);
});
}
}