页面回退返回前一个路由时触发beforeRouteLeave,判断上一个页面name来进行操作,也可用于页面的反向传值,页面跳转,下面贴代码

beforeRouteLeave(to, from, next){
    console.log(to,from,next);
    if(to.name === 'page2'){
        //判断是从哪个路由过来的,如果是page2过来的,表明当前页面不需要刷新,直接用sessionStorage中存的selectNode即可
    }else{
        //如果不是page2过来的需要删除之前存储的数据
        sessionStorage.removeItem('selectNode');
    }
    next();  //一定不能忘写!
  }

beforeRouteLeave后面的参数to是关于上个页面的信息,to.name就是上个路由名称。

这里有的人beforeRouteLeave方法无法触发可能是因为在page2页面中路由跳转写了router.go(-1) ,这里必须写具体跳转的路由名称

this.$router.push({name:'xxx'});

这里要注意beforeRouteLeave函数应放在mounted,methods同级和生命周期写法一致。


瑞瑞_
73 声望8 粉丝