美文网首页人生几何?
[vue-router4快速入门] 2.传递参数的两种方式

[vue-router4快速入门] 2.传递参数的两种方式

作者: 林哥学前端 | 来源:发表于2021-09-22 08:33 被阅读0次

在实际开发中跳转页面时,我们经常要把上一页的数据传递到下一个页面,比如我们有一个用户列表,在列表页点击了一个用户,进到用户详情页,那么用户详情页就需要知道用户在列表页点击的是哪个用户,然后再展示相应的详情。这时候就需要我们用路由把用户的id传到详情页,在vue-router有两种方式可以传递参数

1)动态路由

动态路由的形式是这样的

/userDetail/:id

我们发现路由里有一个冒号,这就表示它是一个动态路由,我们还是来写一个例子,

1)在views下创建一个新的页面,userDetail.vue
<template>
  <div>用户详情页获取到了id:{{ id }}</div>
</template>

<script>
export default {
  data() {
    return {
      id: '',
    }
  },
  mounted() {},
}
</script>

<style></style>

我们把页面上基本内容写上,现在id是空,因为我们还没有获取

2)在router.js中导入新的页面,并且为它对应上路由
import { createRouter, createWebHistory } from 'vue-router' 
import index from './views/index' 
import list from './views/list' 
import userDetail from './views/userDetail'  // 新增的页面

const routes = [
  {
    path: '/', 
    component: index,
  },
  {
    path: '/list',
    component: list,
  },
  {
    path: '/userDetail/:id', // 新增的路由,前一部分/userDetial是固定路由,后面:id说明是动态路由
    component: userDetail,
  },
]

const router = createRouter({
  history: createWebHistory(),
  routes, 
})

export default router

在列表页我们写点模拟数据,渲染出来一个用户列表,在列表中我们增加router-link,实现跳转页面的效果

<template>
  <div>这里是列表页</div>
  <router-link to="/">点击跳转到首页</router-link>
  <ul>
    <li v-for="item in userList" :key="item.id">
      <router-link :to="'/userDetail/' + item.id"
        >点击查看{{ item.name }}</router-link
      >
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      userList: [
        {
          name: '亚历山大',
          id: '01',
        },
        {
          name: '凯撒',
          id: '02',
        },
        {
          name: '屋大维',
          id: '03',
        },
      ],
    }
  },
}
</script>

<style></style>

我们可以发现这次我们的router-link里面to属性是有冒号的,说明它现在动态绑定的,前一部分是固定的字符串'/userDetail/',后面加上了当前一项的id,渲染结果是这样的



点击链接我们就可以进入到用户详情页了

这时候我们需要在用户详情页获取传过来的参数了

this.$route.params.id

这样就可以获取到了
需要注意两点
1)这次用的是this.$route,表示当前的路由,跟之前用的this.$router不一样,后者表示我们在router中创建的那个全局管理路由的对象
2)this.$route.params是一个对象,通过动态路由传过来的参数都会放在这个对象里,我们取的是id这个参数,这里的id和路由配置时候'/userDetail/:id'这个id是相对应的
我们在详情页也定义了一个id数据,以便我们使用,放在模板里

<template>
  <div>用户详情页获取到了id:{{ id }}</div>
</template>

<script>
export default {
  data() {
    return {
      id: '',
    }
  },
  mounted() {
    this.id = this.$route.params.id
  },
}
</script>

<style></style>

我们可以看到详情页就可以显示id了


这是通过动态路由传参,初学者可能理解起来比较费劲,要自己动手写一写,下面说一种简单的

2.使用queryString传参

例如

http://www.test.com/?a=1&b=2

在url中问号后面的a=1&b=2,就是queryString,这里表示参数a的值是1,参数b的值是2

放在我们的例子中,我们现在把用户的名字也传到用户详情页,使用queryString的方式来传
像这样

http://localhost:8080/userDetail/03?name=屋大维

改动一下我们渲染列表的代码,

    <li v-for="item in userList" :key="item.id">
      <router-link :to="'/userDetail/' + item.id + '?name=' + item.name"  // 拼接链接的时候增加了name
        >点击查看{{ item.name }}</router-link
      >
    </li>

渲染结果是:



下一步就是获取这个参数了,这么传参有个好处,就是不用更改router.js里面的配置
那么该在用户详情页直接获取了

this.$route.query.name

这次试用query对象,和上次params不一样,
我们的参数名字是name



完整代码是

<template>
  <div>用户详情页获取到了id:{{ id }},他的名字是:{{ name }}</div>
</template>

<script>
export default {
  data() {
    return {
      id: '',
      name: '',
    }
  },
  mounted() {
    this.id = this.$route.params.id
    this.name = this.$route.query.name
  },
}
</script>

<style></style>

这节课我们向页面传递参数的两种方式都学到了,在实际开发中都很常用,大家一定要掌握。

相关文章

  • [vue-router4快速入门] 2.传递参数的两种方式

    在实际开发中跳转页面时,我们经常要把上一页的数据传递到下一个页面,比如我们有一个用户列表,在列表页点击了一个用户,...

  • C语言 函数传参的理解

    C语言有点东西 不像JAVA 不需要复杂考虑参数传递问题 java就两种参数传递方式 值传递AND引用传递...

  • 方法参数

    一、参数传递 1.参数传递有两种类型:按值传递和按引用传递。 2.按值传递指变量使用的是参数传递的值,而按引用传递...

  • django教程--参数传递(GET方式)

    django教程--参数传递(GET方式) web开发过程中最常见的两种参数传递方式为GET和POST,今天我们就...

  • 【3】数据筛选2 - requests

    目录 1.概述2.下载安装3.入门程序4.请求对象:请求方式5.请求对象:GET参数传递6.请求对象:POST参数...

  • PHP -- 函数

    函数参数传递的两种方式:1.值(变量)传递2.引用传递 第一种:值传递,返回值也是10;定义函数只是定义,并没有执...

  • swift3.0 中inout关键字

    swift有两种参数传递方式 1.值传递 值传递的是参数的一个副本,这样在调用参数的过程中不会影响原始数据。 2....

  • 第三十六节:Vue路由:Vue-router路由传参

    前沿: vue-router的路由跳转时传递参数有两种方式,: 一种是路由参数, 通过定义动态路由传递参数 另一种...

  • 第三十六节:Vue路由:Vue-router路由传参

    前沿: vue-router的路由跳转时传递参数有两种方式,: 一种是路由参数, 通过定义动态路由传递参数 另一种...

  • Swift 关键字 inout - 让值类型以引用方式传递

    两种参数传递方式 值类型 传递的是参数的一个副本,这样在调用参数的过程中不会影响原始数据。 引用类型 把参数本身引...

网友评论

    本文标题:[vue-router4快速入门] 2.传递参数的两种方式

    本文链接:https://www.haomeiwen.com/subject/tcbjgltx.html