• 404和路由钩子


    一、路由模式与404

    1.1、路由模式有两种:

    • hash:路径带#符号,如http://localhost/#/login
    • history:路径不带#符号,如http://localhost/login

    修改路由配置,代码如下:
    在这里插入图片描述
    效果:
    在这里插入图片描述

    1.2、处理404创建一个名为NotFound.vue的视图组件:

    <template>
        <h1>404,你的页面走丢了</h1>
    </template>
    
    <script>
        export default {
            name: "NotFound"
        }
    </script>
    
    <style scoped>
    
    </style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    修改路由配置:

    import NotFound from '../views/NotFound'
    {
    	path:'*',
    	component: NotFound
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    效果:
    在这里插入图片描述

    二、路由钩子与异步请求

    beforeRouteEnter:在进入路由前执行
    beforeRouteLeave:在离开路由前执行

    沿用上一篇博客“参数传递及重定向”项目!

    修改Profile.vue:

    <template>
        <div>
          <h1>个人信息</h1>
          {{id}}
        </div>
    </template>
    
    <script>
        export default {
            props: ['id'],
            name: "UserProfile",
            beforeRouteEnter:(to,from,next) => {
              console.log("进入路由之前");
              next();
            },
            beforeRouteLeave:(to,from,next) => {
              console.log("离开路由之前");
              next();
            }
        }
    </script>
    
    <style scoped>
    
    </style>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    效果:
    在这里插入图片描述
    参数说明:

    • to:路由将要跳转的路径信息
    • from:路径跳转前的路径信息
    • next: 路由的控制参数
    • next() 跳入下一个页面
    • next(‘/path’) 改变路由的跳转方向,使其跳到另一个路由
    • next(false) 返回原来的页面
    • next((vm)=>{}) 仅在beforeRouteEnter 中可用,vm是组件实例

    在钩子函数中使用异步请求

    1、安装Axios cnpm install axios -s
    在这里插入图片描述

    2、main.js引用Axios
    在这里插入图片描述
    3、在上述基础上,增加功能,实现在进入Profile.vue之前,完成数据的加载

    新建static/mock/data.json:

    {
      "name":"马西莫",
      "url": "http://baidu.com",
      "page": "1",
      "isNonProfit":"true",
      "address": {
        "street": "和平街道",
        "city":"湖南湘潭",
        "country": "中国"
      },
      "links": [
        {
          "name": "B站",
          "url": "https://www.bilibili.com/"
        },
        {
          "name": "4399",
          "url": "https://www.4399.com/"
        },
        {
          "name": "百度",
          "url": "https://www.baidu.com/"
        }
      ]
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    4、修改Profile.vue:

    <template>
        <div>
          <h1>个人信息</h1>
          {{id}}
        </div>
    </template>
    
    <script>
        export default {
            props: ['id'],
            name: "UserProfile",
            beforeRouteEnter:(to,from,next) => {
              console.log("进入路由之前");//加载数据
              next(vm => {
                vm.getData();//进入路由之前执行getData;
              });
            },
            beforeRouteLeave:(to,from,next) => {
              console.log("离开路由之前");
              next();
            },
          methods: {
              getData: function () {
                this.axios({
                  method: 'get',
                  url: 'http://localhost:8080/static/mock/data.json'
                }).then(function (response) {
                    console.log(response)
                })
              }
          }
        }
    </script>
    
    <style scoped>
    
    </style>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    运行效果:
    在这里插入图片描述

  • 相关阅读:
    Hystrix:断路器
    Redis客户端常见异常
    java-php-python-ssm水星家纺网站计算机毕业设计
    ManoMano、eMAG等跨境平台如何实现快速出单?测评自养号助你快速突破!
    安徽身份证网上办理最全攻略
    虚拟数字人的商业价值
    JavaSE之IO流
    黑马程序:springboot
    net基于asp.net的二手商品的交易系统-二手网站-计算机毕业设计
    jupyter修改默认打开目录
  • 原文地址:https://blog.csdn.net/Massimo__JAVA/article/details/125469502