Vue 项目中页面间传参问题

发布于 2023-05-13 22:31:21 字数 1440 浏览 58 评论 0

页面 A 跳转到页面 B 需要传参,我一般采用的是编程式导航 router.push( ),而不是声明式导航 <router-link :to=" ">,二者效果作用都一样。以下为路由设置:

// 部分不关键的代码省略
// ...
const routes = [
  {
    path: '/trip/history',
    name: 'HistoryTrip',
    component: HistoryTrip,
  },
  {
    path: '/trip/history/detail',
    name: 'TripDetail',
    component: TripDetail,
  },
]

const router = new VueRouter({
  routes,
  // 使用 HTML5 history 模式
  mode: 'history',
})

export default router

编程式传参有两种方式:

方式一:router.push({ name: 'TripDetail', params: { TripOrderId: 123 }})

// A 页面,此时 URL 为:http://localhost:8080/trip/history
this.$router.push({ name: 'TripDetail', params: { TripOrderId: 123 }})
// B 页面获取参数的方法,此时的 URL 为:http://localhost:8080/trip/history/detail
console.log(this.$route.params.TripOrderId)

大家注意一下 B 页面的 URL,上面并没有 TripOrderId 这个参数。采用这种方法进行传参有两个缺点,这就是其中一个。另一个就是:跳转到页面 B 之后,如果对页面进行刷新,这个 params 参数是会丢失的。打印一下就知道,打印结果应该是 undefined。

方式二(推荐):router.push({ path: '/trip/history/detail', query: { TripOrderId: 123 }})

// A 页面,此时URL为:http://localhost:8080/trip/history
this.$router.push({ path: '/trip/history/detail', query: { TripOrderId: 123 }})
// B 页面获取参数的方法,此时的URL为:http://localhost:8080/trip/history/detail?TripOrderId=123
console.log(this.$route.query.TripOrderId)

方法二中,最明显的就是 URL 中可以看出参数是什么,这种方法更为直观。最重要的是对页面进行刷新,query 参数并不会丢失,依然可以在地址栏看到 TripOrderId 参数。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

染柒℉

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

yili302

文章 0 评论 0

晚霞

文章 0 评论 0

LLFFCC

文章 0 评论 0

陌路黄昏

文章 0 评论 0

xiaohuihui

文章 0 评论 0

你与昨日

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文