vue练手项目(day3:路由组件间传参)

1.路由组件间传参的三种方式

        query参数:传递query参数只需要在路由地址后面通过'?'声明即可,即问好后面所跟的key-value键值对就会被目标路由组件的query属性所接受到,那么就可以通过路由组件的query属性进行访问了

            // 2.query参数,query参数是直接写在路径中的,用?作为标识符
             this.$router.push(`/search?keyword=${this.key}`)

        params参数:传递params参数,如果采用的不是对象传参,则第一步需要在路由配置里面指定占位符。否则会出现路径解析错误问题,因为params参数是通过 ' / '紧跟在路由地址后面的,如果你传入了params参数却没有在路由配置对象中进行配置,则会导致无法找到该路由,即假设目标路地址为 ‘/search ’ 如果此时传入了params参数那么路径会自动变成/search/params ’ 那么此时这个路径是不归路由器管理的,就会导致目标组件无法出现.

        配置params参数占位符:

        {
            name:'search',
            path:'/search/:key?',
            component:Search,
            meta:{
                isShow:true,
            }
        },
//如果你配置了params占位符,但是你有不传入参数,那么你的路径就会出现问题,如果说params参数是可传可
//不传的,那么就在后面加个问号

        传递params参数:

this.$router.push('/search/'+this.key||undefined)
//如果传进去的param参数是个空字符串也会出现路径的显示错误,那么可以通过逻辑短路运算符解决,就是如果
//是无效字符串就返回一个undefined

        通过对象的方式传递query和params参数:这个时候就要关注上面提到的params参数不传或者传空值的情况了(如果有配置占位符的话),另外对象写法的话,可以用路由的名称来指定路由,也可以通过path属性指定路由,但是如果是通过path指定的话,是不可以和params参数连用的

this.$router.push({name:'search',query:{keword:this.key},params:{key:this.key||undefined}})

        传递props参数,路由组件是可以使用props的,但是不常用

        在路由配置对象中有三种方式实现props:

        布尔写法:props:true,这样就把params中的参数通过props传递给了其他组件

        对象写法:props:{a:'10',b:'20'},也可以实现传递

        上面两种不怎么常用,相对常用的是函数写法,props:function(){return {} }

        使用props的唯一好处就是属性会直接出现在实例对象身上,用的时候比较方便

2.路由传参的几个面试题

        1.路由传递参数(对象写法)path和params是否可以一起使用?

                答:不行的。你会发现无法进行路由跳转;URL就出了问题如图:

                                           

        2.如何指定params参数可传可不传?

                答:在路由配置对象里配置params参数占位符的时候在占位符后面加上一个问号即可

        3.params参数可传可不传,那么如果传入的是空串会怎么样?如何解决?

                答:如果传入空串。那么URL会出问题,虽然路由可以跳转。解决方法就是如果params值是一个空串,那么就把这个空串变成undefined,用短路或即可

        4.路由组件能否传递props参数?        

                答:可以,而且有三种配置方法;

                        1)props值为一个布尔值;这时候params参数会被目标路由组件的props接收到,

                        2)props值为一个对象;对象里的键值对会被目标路由组件的props接收到,

                        3)props值为一个函数;函数返回的对象的键值对会被目标路由组件的props接收到

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值