Vue.router 的传参 和其中“标签跳转传参“ 和 “js跳转传参“,不同步的问题,解决方法

<body>
    
    <div id="app">

        <router-link to="/aa">登录</router-link>
        <router-link to="/bb">注册</router-link>

        <router-view></router-view>
    </div>
    <template id="aa">
        <div>
            <h1>我是登录</h1>
        </div>
    </template>
    <template id="bb">
        <div>
            <h1>我是注册</h1>
        </div>
    </template>
    <script src="./js/vue2.6.14.js"></script>
    <script src="./js/vue-router.js"></script>
    <script>
        let Aa = {
            template:`#aa`,
        }
        let Bb = {
            template:`#bb`
        }
        Vue.use(VueRouter)
        let router = new VueRouter({
            routes:[
                {
                    path:'/aa',
                    name:'Aa',
                    component:Aa
                },
                {
                    path:'/bb',
                    name:'Bb',
                    component:Bb
                }
            ]
        })
        let vm = new Vue({
            el:'#app',
            router,
            components: {
                aa,
                bb
            }
        })
    </script>


路由的传参和取参

1.在路由配置中 去给 相关组件 配参,然后我们在 路由跳转到的 那个组件中 去访问 这些参数

结合 router-link 一起使用

(1).在路由中设置---配置--参数名称:

routes:[
                {
                    path:'/aa/:uid',
                    name:'Aa',
                    component:Aa
                }
            ]

(2).在视图层设置---配置--给参数,赋的是 是什么,要在 to属性里 写清楚!!

 <router-link to="/aa/001">登录</router-link>

(3).在组件中的created生命周期函数中设置---获取(取参):$route 路由信息对象,只读对象

 let Aa = {
            template:`#aa`,
            created(){
                console.log(this.$route);
            }
        }

 获取uid并在页面显示(取参):

 let Aa = {
            template:`#aa`,
            data(){
                return {
                    uid:''
                }
            },
            created(){
                console.log(this.$route);
                console.log(this.$route.params);
                this.uid = this.$route.params.uid
            }
        }
<template id="aa">
        <div>
            <h1>我是登录</h1>
            <p>我的uid为{{uid}}</p>
        </div>
    </template>


2.在router-link标签里 去配参,然后我们在 路由跳转到的 那个组件中 去访问 这些参数 

(1)在视图层设置---配置(传参)(!!注意:这种对象方式,to前面要加冒号):

 <router-link :to="{name:'Bb',query:{id:'001'}}">注册</router-link>

(2).在组件中的created生命周期函数中设置---获取(取参):

let Bb = {
            template:`#bb`,
            data(){
                return {
                    id:''
                }
            },
            created(){
                console.log(this.$route);
                this.id = this.$route.query.id
            }
        }
 <template id="bb">
        <div>
            <h1>我是注册</h1>
            <h1>我的id为{{id}}</h1>
        </div>
    </template>


 3.常用搭配:path--query name---params ---------------------------------------------

<router-link :to="{path:'aa',query:{color:'red'}}" />

<router-link :to="{name:'Bb',params:{color:'red'}}" />

:to传参的属性里 query和name或path都可以 params是和name配对的,取参方式都是一样的


4.路由跳转传参---,其中"标签跳转传参" 和 "js跳转传参",不同步的问题,解决方法:

 <router-link :to="{name:'God',query:{id:001,name:'苹果'}}">水果</router-link>
        <button @click="gogod">水果</button>
 methods:{
                gogod(){
                    this.$router.push({path:'/god',query:{id:'2',name:'香蕉'}})
                }
            }

此时两个按钮指向一个路由:

在视图层 添加 :key="$route.fullPath",设置如下:

 <router-view :key="$route.fullPath"></router-view>

注意:不同步:指定是 数据 不能 传递到 组件上,(或者数据 组件 接收不到 传递过来的数据!!)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值