vue路由query和params的几种传参方式

迈不过友情╰ 2022-04-08 13:18 965阅读 0赞

在项目中需要路由传参,查看了官方文档以及参考了网上其他资料,现总结如下:
一/ params传参

  1. 占位符:id

    //声明式

    //编程式
    skipMethod (name) {

    1. this.$router.push(`/home/${name}`);
    2. //或者
    3. this.$router.push({
    4. path: `/home/${name}`
    5. })

    }

路由配置:

  1. {
  2. path; '/home/:id',
  3. name: 'home',
  4. component: Home
  5. }

子组件中获取:

  1. this.$route.params.id; //注意是$route

根据官方文档的说明,我觉得:id 的作用主要是利用props将组件和路由解耦,我通俗的说一下:一个组件可能是一个路由指向它,也有可能只是作为普通的子组件(不是路由),如果使用该组件都要向其传递name参数,如果用this.$route.params.name;接收参数,那么作为普通的子组件怎么接收参数,所以最好不管怎么用该组件,该组件都要用props接收参数,下面主要说路由如何用props

路由配置:

  1. routes: [
  2. { path: '/', component: Hello }, // No props, no nothing
  3. { path: '/hello/:name', component: Hello, props: true }, // Pass route.params to props
  4. { path: '/static', component: Hello, props: { name: 'world' }}, // static values
  5. { path: '/dynamic/:years', component: Hello, props: dynamicPropsFn }, // custom logic for mapping between route and props
  6. ]

父组件:

  1. <ul>
  2. <li><router-link to="/">/</router-link></li>
  3. <li><router-link to="/hello/you">/hello/you</router-link></li>
  4. <li><router-link to="/static">/static</router-link></li>
  5. <li><router-link to="/dynamic/1">/dynamic/1</router-link></li>
  6. <li><router-link to="/attrs">/attrs</router-link></li>
  7. </ul>

子组件:

  1. export default {
  2. props: {
  3. ..........
  4. }
  5. }

此外,相同路由跳转只是后面跟的数据不一样,也是用这种方式传参(动态路由)

  1. params对象

    //声明式

    //编程式
    skipMethod (name) {

    1. this.$router.push({
    2. name: 'home',
    3. params: {
    4. name: name
    5. }
    6. })

    }

路由配置:

  1. {
  2. path; '/home',
  3. name: 'home',
  4. component: Home
  5. }

接收:

  1. this.$route.params.name;

注意:params只能用name来引入路由

二/ query传参

  1. //声明式
  2. <router-link :to="'/home?name=' + name">
  3. //或者
  4. <router-link :to="{path: '/home', query: {name: name}}">
  5. //编程式
  6. skipMethod (name) {
  7. this.$router.push({
  8. path: '/home',
  9. query: {
  10. name: name
  11. }
  12. })
  13. }

路由配置:

  1. {
  2. path; '/home',
  3. name: 'home',
  4. component: Home
  5. }

子组件接收:

  1. this.$route.query.name

发表评论

表情:
评论列表 (有 0 条评论,965人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Vue方式

    前言:顾名思义,vue路由传参是指嵌套路由时父路由向子路由传递参数,否则操作无效。传参方式可以划分为params传参和query传参,params传参又可以分为url中显示参数