在VUE的路由钩子中使用this

官方文档

const Foo = {
  template: `...`,
  beforeRouteEnter (to, from, next) {
    // 在渲染该组件的对应路由被 confirm 前调用
    // 不!能!获取组件实例 `this`
    // 因为当钩子执行前,组件实例还没被创建
  },
  beforeRouteUpdate (to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
  },
  beforeRouteLeave (to, from, next) {
    // 导航离开该组件的对应路由时调用
    // 可以访问组件实例 `this`
  }
}  

如何在beforeRouteEnter钩子中使用组件的方法和数据呢?

beforeRouteEnter(to, from, next){
     next(vm=>{
        vm.uuid=vm.random(36)
        //其中uuid为data中的数据,random()为methods中获取随机数的方法
    })
},
data(){
    return {
        uuid:""
    }
},
methods:{
    random(length) {
        var str = Math.random().toString(16).substr(2);
        //toString(a) a为空,则使用基数10;2/8/16 - 数字以二/八/十六进制值显示
        if (str.length>=length) {
            return str.substr(0, length);
        }
        str += this.random(length-str.length);
        return str;
    }
}
    原文作者:Mask
    原文地址: https://segmentfault.com/a/1190000020235311
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞