• 15.Vue的路由钩子


    1.什么是路由钩子

    • beforeRouteEnter:在进入路由前执行
    • beforeRouteLeave:在离开路由前执行
      export default {
        props: ['id'],
        name: "UserProfile",
        beforeRouteEnter: (to, from, next) => {
          console.log("准备进入个人信息页");
          next();
        },
        beforeRouteLeave: (to, from, next) => {
          console.log("准备离开个人信息页");
          next();
        }
      }

    参数说明:

    • to:路由将要跳转的路径信息
    • from:路径跳转前的路径信息
    • next:路由的控制参数

      • next() 跳入下一个页面
      • next('/path') 改变路由的跳转方向,使其跳到另一个路由
      • next(false) 返回原来的页面
      • next((vm)=>{}) 仅在 beforeRouteEnter 中可用,vm 是组件实例

    2.导入

    注:npm不行就用cnpm,cnpm不行就用npm

    npm install --save axios vue-axios
    cnpm install

    3.main.js中配置

    1 // 安装异步通信工具
    2 import axios from 'axios'
    3 import VueAxios from 'vue-axios'
    4 
    5 Vue.use(VueAxios, axios);

    4.准备数据

    在static文件夹中建立mock文件夹,在建立一个data.json文件

     1 {
     2   "name": "第一个Axios程序",
     3   "url": "https://www.cnblogs.com/zhihaospace/p/12078861.html",
     4   "page": 1,
     5   "isNonProfit": true,
     6   "address": {
     7     "street": "科大南区",
     8     "city": "安徽",
     9     "country": "中国"
    10   },
    11   "links": [
    12     {
    13       "name": "海恋天",
    14       "url": "https://www.cnblogs.com/zhihaospace/"
    15     },
    16     {
    17       "name": "Vue的组件",
    18       "url": "https://www.cnblogs.com/zhihaospace/p/12078835.html"
    19     },
    20     {
    21       "name": "Vue的双向绑定",
    22       "url": "https://www.cnblogs.com/zhihaospace/p/12078708.html"
    23     }
    24   ]
    25 }

    5.修改Profile.vue文件

     1 <template>
     2   <div>
     3     <div>个人信息</div>
     4     编号:{{$route.params.userId}}
     5     <br>
     6     姓名:{{$route.params.userName}}
     7   </div>
     8 
     9 </template>
    10 
    11 <script>
    12 
    13   export default {
    14     name: "UserProfile",
    15     beforeRouteEnter: (to, from, next) => {
    16       console.log("准备进入个人信息页");
    17       // 注意,一定要在 next 中请求,因为该方法调用时 Vue 实例还没有创建,此时无法获取到 this 对象,在这里使用官方提供的回调函数拿到当前实例
    18       next(vm => {
    19         vm.getData();
    20       });
    21     },
    22     beforeRouteLeave: (to, from, next) => {
    23       console.log("准备离开个人信息页");
    24       next();
    25     },
    26     methods: {
    27       getData: function () {
    28         this.axios({
    29           method: 'get',
    30           url: 'http://localhost:8080/static/mock/data.json'
    31         }).then(function (repos) {
    32           console.log(repos);
    33         }).catch(function (error) {
    34           console.log(error);
    35         });
    36       }
    37     }
    38   }
    39 </script>
    40 
    41 
    42 <style scoped>
    43 
    44 </style>

    展示:

  • 相关阅读:
    最常用的vim操作指令练习记录
    数据库中间件——Mycat配置
    分布式事务解决方案seata之AT模式原理剖析
    分布式服务限流降级熔断解决方案Nacos之Dashboard界面配置含义记录
    本地Centos7虚拟机安装rabbitmq,主宿机无法访问监控界面解决
    dubbo学习笔记
    SpringBoot整合mybatis-plus代码生成器(备用)
    Zookeeper大概配置及与java集成使用
    Adb免root卸载Android预装应用
    腾讯X5内核调试(安卓)
  • 原文地址:https://www.cnblogs.com/zhihaospace/p/12084026.html
Copyright © 2020-2023  润新知