【Vue】Vue中的路由跳转与路由传参的笔记归纳总结

目录

一.路由的跳转

1.方法一:a标签实现跳转

2.方法二:router-link标签实现跳转(声明式导航跳转)

3.a标签和router-link两个实现跳转的区别

4.方法三:编程式导航(编程式导航跳转------js代码)

a.对按钮绑定点击事件

b.当点击的时候触发事件  this.$router.push进行拼接

二.路由的传参

1.传参引入------为什么要传参

2.如何获取到传入的参数

3.url的组成

4.路由传参

a.-------query传参

b.---------params传参

5.获取并打印传入的参数--总结


一.路由的跳转

1.方法一:a标签实现跳转

<a href="/login">去登陆页面</a>

 

2.方法二:router-link标签实现跳转(声明式导航跳转)

<router-link to="/login">去登陆页面</router-link>

 

3.a标签和router-link两个实现跳转的区别

        a标签跳转会重新加载网页,重新请求服务器

        router-link没有重新加载网页,只是渲染了新组建

使用情况:跳转到非当前网站的链接就选择a标签,切换当前网站的其他页面就选择router-link,因为router-link不会重新请求当前.html文件

4.方法三:编程式导航(编程式导航跳转------js代码)

a.对按钮绑定点击事件

<div @click="goLogin">点击跳转到登陆页面</div>

b.当点击的时候触发事件  this.$router.push进行拼接

代码理解:在当前路由下的最后添加"/login"

使用场景:可以在此处书写逻辑代码,声明式导航跳转是用户点击后直接跳转,而编程式导航可以进行逻辑判断,比如满足什么条件再跳转。

好处:在任何标签(只要能写点击事件)都可以用js代码实现路由跳转

<script>
    export default{
        methods: {
            goLogin(){
              this.$router.push("/login")
            }
        }
    }
</script>

二.路由的传参

1.传参引入------为什么要传参

假设下面arr为我们项目中从后端获取到的数据(四个产品),我们通过循环渲染到页面上,想达到的效果是点击某一个产品,会跳转到该点击的产品的详情页面。

<script>
export default {
  data() {
    return {
      arr: [{ id: 1, title: "Box1" },
      { id: 2, title: "Box2" },
      { id: 3, title: "Box3" },
      { id: 4, title: "Box4" }]
    }
  },
</script>
      <div v-for="el in arr" :key="el.id">
        <button @click="goBox(el.id)">{{ el.title }}</button>
      </div>

        我们对每一个产品按钮绑定点击事件goBox,每个产品都绑定的同一个事件,不难理解网站上成千上万个产品,不可能书写成千上万个页面,我们跳转的是同一个页面,只是后端返回渲染到页面上的数据不一样。那么如何区分点击的是哪一个产品的详情页面呢,这时候就需要跳转的时候传参。

        绑定点击事件触发goBox,传入的参数el.id是不一样的,我们再将传入的参数el.id拼接到网址的后面。我们可以看出点击后我们都去的/Box这个页面,但是传入的参数是不一样的,这时候我们就可以请求到传入的参数,发送给服务器,服务器可以从数据库中通过这个id得到这个产品相关的信息,然后渲染到页面上。

<script>
    export default{
        methods: {
            goBox(id) {
              this.$router.push(`/Box1?goodsid=${id}`)
            },
        }
    }
</script>

2.如何获取到传入的参数

        获取路由信息(跳转时携带的信息)-----this.$route

3.url的组成

url的组成:协议:// ip地址:端口号port / 虚拟路径pathname ? querystring #hash

ip地址:端口号port  ===映射===>域名(例如www.baidu.com)

?queryString    ========>search 表示参数,给服务器发送数据(pathname也可以)

#hash   哈希不会发送给服务器,只作为一个锚点(定位到网页中的一个元素)

4.路由传参

传参的方式

方法一:?xxxxx ,将参数拼接到“ ?”的后面(常用)

方法二:/ xxxxx,拼接到“ / ”后面

方法二比方法一多一步操作,也就是注册路由的时候 “  /:变量名 ”

 

a.-------query传参

query传参方法一:通过js代码来写,this.$router.push

<div v-for="el in arr" :key="el.id">
        <button @click="goBox(el.id)">{{ el.title }}</button>
</div>
<script>
    export default{
        methods: {
            goBox(id) {
              this.$router.push(`/Box1?goodsid=${id}`)
            },
        }
    }
</script>

传参后效果 

 

 

query传参方法二:用router-link标签,直接用“to”对url进行拼接

 <router-link to="/Box1?id=1">query传参</router-link>

传参后效果

 

 

query传参方法三:对象方式

<button @click="gobox2" >query传参</button>
<script>
    export default{
        methods: {
          gobox2() {
                 this.$router.push({ path: "/Box2", query: { id: 1, uid: 2, age: 21 } })
                 console.log(this.$route.query);
           }
        }
    }
</script>

其中path表示跳转的网址  query表示需要传的参数

传参后效果:

打印的this.$route.query为

 query传参方法四:用router-link标签,直接用“:to”对url进行拼接,后面为对象

<router-link :to="{path:'/Box4',query:{id:1,uid:2}}">query传参</router-link>

传参后效果:

 

b.---------params传参

params传参方法一:通过js代码来写,this.$router.push

<button @click="goBox41">params传参</button>
<script>
    export default{
        methods: {
            goBox41(){
            this.$router.push("/Box4/20221223")
            },
        }
    }
</script>

传参后效果:

params传参方法二:对象方式

<button @click="goBox42">params传参</button>
<script>
    export default{
        methods: {
            goBox42(){
            this.$router.push({name:"Box4",params:{a1:123,b1:1111}})
            }, 
        }
    }
</script>    

 其中name表示路由的名字(独一无二不能重复)

注意!!!!!!其中params中的变量名必须在路由中注册过,一一对应,不能多不能少

 

 传参后效果:

 弊端:只能通过路由名name,才能params传参

params传参方法三:用router-link标签,直接用“to”对url进行拼接

 <router-link to="/Box4/999/111">params传参</router-link>

注意:路由注册变量名和拼接的值一一对应,不能多不能少,否则跳转失败

 传参后效果:

 

params传参方法四:用router-link标签,直接用“:to”对url进行拼接,后面为对象

<router-link :to="{name:'Box4',params:{a1:55555,b1:'b'}}">params传参</router-link>

注意:路由注册变量名和拼接的值一一对应,不能多不能少,否则跳转失败

 

传参后效果:

5.获取并打印传入的参数--总结

获取路由信息(跳转时携带的信息)

a.---------this.$route

params传参

b.----------this.$route.params

query传参

c.-----------this.$route.query

 

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
百度云盘链接 项目描述: 01_vue项目_项目功能演示.avi 02_Vue项目_项目开发准备.avi 03_Vue项目_创建项目并运行.avi 04_Vue项目_资源准备.avi 05_Vue项目_项目源码目录设计.avi 06_Vue项目_stylus使用.avi 07_Vue项目_组件化编码.avi 08_Vue项目_引入vue-router.avi 09_Vue项目_FooterGuide组件.avi 10_Vue项目_各导航路由组件(静态).avi 11_Vue项目_HeaderTop组件.avi 12_Vue项目_使用swiper实现商品分类列表轮播.avi 13_Vue项目_ShopList组件(静态).avi 14_Vue项目_Login组件(静态).avi 15_Vue项目_启动后台应用并测试接口.avi 16_Vue项目_封装ajax请求函数.avi 17_Vue项目_封装接口请求函数.avi 18_Vue项目_使用git对项目进行版本控制.avi 19_Vue项目_复习.avi 20_Vue项目_配置代理实现跨域ajax请求.avi 21_Vue项目_创建vuex的整体结构.avi 22_Vue项目_使用vuex管理首页数据.avi 23_Vue项目_异步显示当前地地址.avi 24_Vue项目_异步显示食品分类轮播列表.avi 25_Vue项目_使用watch和$nextTick解决轮播的bug.avi 26_Vue项目_异步显示商家列表.avi 27_Vue项目_使用svg显示加载提示界面.avi 28_Vue项目_Star组件.avi 29_Vue项目_注册登陆功能演示说明.avi 30_Vue项目_登陆界面效果1_切换登陆方式.avi 31_Vue项目_登陆界面效果2_手机号检查.avi 32_Vue项目_登陆界面效果3_倒计时效果.avi 33_Vue项目_登陆界面效果4_切换密码的显示和隐藏.avi 34_Vue项目_登陆界面效果5_前台表达验证.avi 35_Vue项目_复习.avi 36_Vue项目_动态一次性图形验证码.avi 37_Vue项目_定义接口请求函数.avi 38_Vue项目_登陆_发送短信验证码.avi 39_Vue项目_登陆_完成登陆请求.avi 40_Vue项目_登陆_保存用户信息到vuex.avi 41_Vue项目_登陆后更新个人心界面.avi 42_Vue项目_登陆更新跳转路由.avi 43_Vue项目_自动登陆.avi 44_Vue项目_退出登陆.avi 45_Vue项目_搭建商家整体界面.avi 46_Vue项目_json的理解.avi 47_Vue项目_设计json数据.avi 48_Vue项目_使用mockjs模拟接口数据.avi 49_Vue项目_ajax请求mockjs模拟的接口.avi 50_Vue项目_ShopHeader组件.avi 51_Vue项目_复习.avi 52_Vue项目_异步显示goods数据.avi 53_Vue项目_滑动效果分析.avi 54_Vue项目_使用better-scroll实现回弹滑动.avi 55_Vue项目_收集scrollY.avi 56_Vue项目_收集tops.avi 57_Vue项目_滑动右侧列表更新当前分类.avi 58_Vue项目_解决惯性滑动不更新当前分类的bug.avi 59_Vue项目_点击分类项滑动右侧列表.avi 60_Vue项目_CartControl组件1.avi 61_Vue项目_CartControl组件2.avi 62_Vue项目_Food组件1.avi 63_Vue项目_Food组件2.avi 64_Vue项目_ShopCart组件1.avi 65_Vue项目_ShopCart组件2.avi 66_Vue项目_显示购物项列表.avi 67_Vue项目_解决列表显示的3个bug.avi 68_Vue项目_复习.avi 69_Vue项目_购物车动画.avi 70_Vue项目_购物车列表的滑动.avi 71_Vue项目_清空购物车.avi 72_Vue项目_ShopRatings组件1.avi 73_Vue项目_ShopRatings组件2.avi 74_Vue项目_ShopInfo组件1.avi 75_Vue项目_ShopInfo组件2.avi 76_Vue项目_ShopInfo组件3.avi 77_Vue项目_Search组件.avi 78_Vue项目_缓存路由组件对象.avi 79_Vue项目_路由组件懒加载.avi 80_Vue项目_图片懒加载vue-lazyload.avi 81_Vue项目_使用moment实现日期过滤器.avi 82_Vue项目_打包文件分析与优化.avi 笔记总结.zip 课件资料.zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值