在没风的地方找太阳  在你冷的地方做暖阳 人事纷纷  你总太天真  往后的余生  我只要你 往后余生  风雪是你  平淡是你  清贫也是你 荣华是你  心底温柔是你  目光所致  也是你 想带你去看晴空万里  想大声告诉你我为你着迷 往事匆匆  你总会被感动  往后的余生  我只要你 往后余生  冬雪是你  春花是你  夏雨也是你 秋黄是你  四季冷暖是你  目光所致  也是你 往后余生  风雪是你  平淡是你  清贫也是你 荣华是你  心底温柔是你  目光所致  也是你
jQuery火箭图标返回顶部代码 - 站长素材

一文解决vue-router路由传参

现有如下场景,点击父组件的li元素跳转到子组件中,并携带参数,便于子组件获取数据。

父组件中:

<li v-for="article in articles" @click="getDescribe(article.id)">

methods:

方案一:

通过路径

   getDescribe(id) {
      // 直接调用$router.push 实现携带参数的跳转
      this.$router.push({
        path: `/describe/${id}`
      })
    },

方案一,需要对应路由配置如下:

   {
     path: '/describe/:id',
     component: Describe
   }

很显然,需要在path中添加/:id来对应 $router.push 中path携带的参数。在子组件中可以使用来获取传递的参数值。

this.$route.params.id

路径显示结果为: http://localhost:8080/#/Describe/500

 

方案二:

父组件中:通过路由属性中的name来确定匹配的路由,通过params来传递参数。(刷新后获得的参数会消失)。

      this.$router.push({
        name: 'Describe',
        params: {
          id: id
        }
      })

对应路由配置: 注意这里不能使用:/id来传递参数了,因为父组件中,已经使用params来携带参数了。

   {
     path: '/describe',
     name: 'Describe',
     component: Describe
   }

子组件中: 这样来获取参数

this.$route.params.id

方案三:

父组件:使用path来匹配路由,然后通过query来传递参数
这种情况下 query传递的参数会显示在url后面?id=?

      this.$router.push({
        path: '/describe',
        query: {
          id: id
        }
      })

对应路由配置:

   {
     path: '/describe',
     component: Describe
   }

对应子组件: 这样来获取参数

this.$route.query.id

路径显示结果为: http://localhost:8080/#/Describe?id=500

下面整理一下这两者的差别:

1.用法上的

query要用path来引入(name也可以,不知为什么望指点), 使用 this.$route.query来获取。
params要用name来引入,使用 this.$route.params 来获取。

2.展示上的

query更加类似于我们ajax中get传参,浏览器地址栏中显示参数。
params则类似于post。缺点刷新后获取的值为undefiend

 

 

params:

 

 query:

 

 

 

 

 

原文参考:

https://www.jianshu.com/p/c28d11000859

posted @ 2020-01-16 16:11  艺术诗人  阅读(213)  评论(0编辑  收藏  举报