vue-router的query和params的区别/若刷新当前页面params对象里面数据会消失,而query不会

主要讲3点

1.query和params使用区别(重点)

模拟一下路由,假设已经在router.js文件里定义path=‘aaa/index2/’和name='index2'

query使用

//当前页面,index1.vue
methods:{
    //一个点击按钮,事件
    btnClick () {
        this.$router.push({
            path:'aaa/index2',
            //如果不想用path的话,可以用name代替(前提是要在router.js定义),下面这行代码
            //name:'idnex2'
            query:{id:10086,name:'zhangsan'}
        })
    }
}

//这个是从index1.vue过来的页面,叫index2.vue
mounted(){//vue的生命周期函数
    const {id , name} = this.$router.query//把query对象里面的id和name拿出来
    //一些异步操作
    async this.asdfasdf(id,name)
}

params使用

//当前页面,index1.vue
methods:{
    //一个点击按钮,事件
    btnClick () {
        this.$router.push({
            name:'idnex2'
            params:{id:10086,name:'zhangsan'}
        })
    }
}

//这个是从index1.vue过来的页面,叫index2.vue
mounted(){//vue的生命周期函数
    const {id , name} = this.$router.params//把params对象里面的id和name拿出来
    //一些异步操作
    async this.asdfasdf(id,name)
}

总结:

从query拿到的数据(即id和name)会在url上显示
        如:www.asdf.com/aaa/index2?id=10086&name=zhangsan
从params拿到的数据(即id和name)可以在url上显示,也可以不显示
        如:www.asdf.com/aaa/index2/10086/zhangsan

若使用params在url上带数据,则需要把router.js

path=‘aaa/index2’改成

path='aaa/index/:id/:name' (属性名要对应)

若使用params在url上不带数据,直接这样,什么都不用改path=‘aaa/index2’

2.若刷新当前页面params对象里面数据会消失,而query不会,为什么呢?(个人理解)

parmas

parmas是在vue中,刷新当前页面相当于重新加载vue,那么parmas对象重新加载当然是没数据(因为第一次进来index2页面的时候,数据是从index1里过来的)

query

刷新当前页面url是不变的,queyr对象里存的数据也不会刷新,$router.query.id就能直接拿到

3.query和params的描述(官方定义)

  • $route.params

    • 类型: Object

      一个 key/value 对象,包含了动态片段和全匹配片段,如果没有路由参数,就是一个空对象。

  • $route.query

    • 类型: Object

      一个 key/value 对象,表示 URL 查询参数。例如,对于路径 /foo?user=1,则有 $route.query.user == 1,如果没有查询参数,则是个空对象

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值