Vue路由跳转的5种方式及扩展

 更新时间:2023年11月06日 16:09:17   作者:前端初见  
这篇文章主要给大家介绍了关于Vue路由跳转的5种方式及扩展,在Vue中路由是一种用于导航和管理页面之间跳转的机制,Vue Router是Vue官方提供的路由管理器,需要的朋友可以参考下

路由跳转有两种形式:声明式导航、编程式导航

1. router-link

  • 声明式
  • prop=> :to=“…”
  • 相当与 router.push(…)

router-link中链接如果是’ / '开始,就是从根路由开始

如果开始不带 ’ / ',则是从当前路由开始

例子

<template>
  <div>
    router-link 第一种方式
    <router-link :to="{name:'home'}">  
    <router-link :to="{path:'/home'}"> 
    name,path都行, 建议用name 
     <router-link :to"{
              name:'page1',
              query:{key:'我是传递的参数'}
    }">
    传递参数
    </router-link>
  </div>
</template>

2. this.$router.push()

  • 可追溯
  • 编程式
  • router.push(…)//该方法的参数可以是一个字符串路径,或者一个描述地址的对象。
  • 会向history栈添加新纪录
  • 方式
    • name
      • route-name
      • params
      //params传参
      1.路由配置:
       name: 'home',
       path: '/home/:id'(或者path: '/home:id')
       2.跳转:
       this.$router.push({name:'home',params: {id:'1'}})
       注意:
       // 只能用 name匹配路由不能用path
       // params传参数(类似post)  路由配置 path: "/home/:id" 或者 path: "/home:id"否则刷新参数消失
      
    • path
      • router-path
      • query
      //不带参数
       this.$router.push('/home')
       this.$router.push({name:'home'})
       this.$router.push({path:'/home'})
      //query传参
      1.路由配置:
       name: 'home',
       path: '/home'
       2.跳转:
       this.$router.push({name:'home',query: {id:'1'}})
       this.$router.push({path:'/home',query: {id:'1'}})
       3.获取参数
       html取参: $route.query.id
       script取参: this.$route.query.id
      
      //直接通过path传参
      1.路由配置:
      name: 'home',
      path: '/home/:id'
      2.跳转:
      this.$router.push({path:'/home/123'}) 
      或者:
      this.$router.push('/home/123') 
      3.获取参数:
      this.$route.params.id
      

例子

<template>
  <div>
    <vant-button @click='gotoFn1' type="defaullt">
      push第二种方式
    <van-button>
  </div>
</template>
export default{
  name:'page',
  data(){
  },
  methods:{
   gotoFn1(){
      this.$router.push({
        path:'/page',
        query:{key:'我是传递的参数'}
      })
      //push第二种路由跳转方法
    }
  }
}

3. this.$router.replace() (用法同push)

  • 不可追溯
  • 它不会向history添加新纪录
  • 方式
    • name
      • route-name
      • params
        • 例如
            this.$route.push({
                name:' Home',//路由的名称
                params:{
                    site:[],
                    bu:[]
                  }
              })
        
        • 解释
        params:/router1/:site/:bu
        //这里的site、bu叫做params
        
    • path
      • router-path
      • query
        • 例如
        this.$router.push({
           path:'/home',
           query:{
            site:[],
            bu:[]
            }
        })
        
        -解释
        query:/router1?id=123
        这里的id叫做query
        

例子

<template>
  <div>
    <vant-button @click='gotoFn2' type="defaullt">
      replace第三种方式
    <van-button>
  </div>
</template>
export default{
  name:'page',
  data(){
  },
  methods:{
   gotoFn1(){
      this.$router.replace({
        path:'/page',
        query:{key:'我是传递的参数'}
      })
      //replace第三种路由跳转方法
    }
  }
}

4. this.$router.go(n)

  • 相当于当前页面向前或向后跳转多少个页面,类似window.history.go(n)m可以为正数可为负数
  • $router.go(-1)

例子

<template>
  <div>
    <vant-button @click='goBack' type="defaullt">
      第四种方式
    <van-button>
  </div>
</template>
export default{
  name:'page',
  data(){
  },
  methods:{
   goBack(){
      this.$router.go(-1)
       //go第四种路由跳转方法
    }
  }
}

5. location

  • Location对象包含有关当前URL的信息
  • href
    • 设置或返回完整的URL。
    • readable可读
      const url=location.href
      
    • writeable
     location.href='https://www.baidu.com'
    
  • 刷新页面

可以用 window.location来访问

扩展

this.$ router.push()和 this.$ router.replace()的区别

this.$router.push()跳转到指定url路径,并向history栈中添加一个记录,点击后退会返回上一个页面

this.$ router.replace()跳转到指定url路径,但是history栈中不会有记录,所以点击返回按钮时,会直接用【上一个页面之前的那个页面】来替换当前的页面

params和query的区别

query类似 get,跳转之后页面 url后面会拼接参数,类似?id=1。

非重要性的可以这样传,密码之类还是用params,刷新页面id还在。

params类似 post,跳转之后页面 url后面不会拼接参数。

总结:1.query可以用name和path匹配路由,通过this.$route.query.id获取参数,刷新浏览器参数不会丢失

2.params只能用name匹配路由,通过path匹配路由获取不到参数,对应的路由配置path:‘/home/:id’或者path:‘home:id’,否则刷新浏览器参数丢失

3.直接通过url传参,push({path: ‘/home/123’})或者push(’/home/123’),对应的路由配置path:‘/home/:id’,刷新浏览器参数不会丢失。

总结

到此这篇关于Vue路由跳转的5种方式及扩展的文章就介绍到这了,更多相关Vue路由跳转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue3使用vue-qrcode-reader实现扫码绑定设备功能(推荐)

    Vue3使用vue-qrcode-reader实现扫码绑定设备功能(推荐)

    本文介绍了在Vue3中使用vue-qrcode-reader版本5.5.7来实现移动端的扫码绑定设备功能,用户通过扫描二维码自动获取设备序列号,并填充到添加设备界面,完成设备绑定的全过程,包含ScanCode.vue和DeviceAdd.vue两个主要界面的实现方式
    2024-10-10
  • Vue路由实现页面跳转的示例代码

    Vue路由实现页面跳转的示例代码

    根据登录的角色不一样,实现不同的路由展示,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-04-04
  • vue innerHTML 绑定单击事件不生效的解决

    vue innerHTML 绑定单击事件不生效的解决

    这篇文章主要介绍了vue innerHTML 绑定单击事件不生效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • vue 实现基础组件的自动化全局注册

    vue 实现基础组件的自动化全局注册

    这篇文章主要介绍了vue 实现基础组件的自动化全局注册的方法,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2020-12-12
  • vue3 vite配置跨域及不生效问题解决

    vue3 vite配置跨域及不生效问题解决

    这篇文章主要介绍了vue3 vite配置跨域以及不生效问题,本文给大家分享完美解决方案,需要的朋友可以参考下
    2023-07-07
  • vue3如何实现​6位支付密码输入框

    vue3如何实现​6位支付密码输入框

    微信、支付宝支付密码时的密码输入框大家都很熟悉,本文主要介绍了vue3如何实现​6位支付密码输入框,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • element UI 中的 el-tree 实现 checkbox 单选框及 bus 传递参数功能

    element UI 中的 el-tree 实现 checkbox&n

    在日常项目开发中,会经常遇到,树形结构的查询方式,为了快速方便开发,常常会使用到快捷的ui组件去快速搭树形结构,这里我用的是 element ui 中的 el-tree,对element UI 中的 el-tree 实现 checkbox 单选框及 bus 传递参数的方法感兴趣的朋友跟随小编一起看看吧
    2022-09-09
  • vue项目element UI input框扫码枪扫描过快出现数据丢失问题及解决方案

    vue项目element UI input框扫码枪扫描过快出现数据丢失问题及解决方案

    这篇文章主要介绍了vue项目element UI input框扫码枪扫描过快出现数据丢失问题,输入框要掉两个接口,根据第一个验证接口返回的code,弹不同的框,点击弹框确认再掉第二个接口,需要的朋友可以参考下
    2022-12-12
  • vue的Element组件上传文件el-upload上传成功后清空方式

    vue的Element组件上传文件el-upload上传成功后清空方式

    文章介绍了几种清空文件上传组件的方法,包括设置file-list为空数组和修改组件key,这些方法可以帮助在新增或修改时清空组件内容,解决实际开发中的问题
    2026-02-02
  • Vue中处理全局快捷键的实用技巧小结

    Vue中处理全局快捷键的实用技巧小结

    随着用户体验要求的不断提升,快捷键的处理也成为了提高用户操作效率的一个重要方面,本文将深入探讨如何在 Vue 3 中高效地处理快捷键,希望对大家有所帮助
    2024-11-11

最新评论