热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vue01:vuerouter的路由组件之间如何传递数据

不想看太多,请查看最后的总结选择需要的欢迎访问我的博客:林除夕在某个组件中只有一个路由视图区域,且各个路由组件之间不存在父子关系时,要在组件之间传递数据就不好通过父子组件传值的方式

不想看太多,请查看最后的总结选择需要的

欢迎访问我的博客:林除夕

在某个组件中只有一个路由视图区域,且各个路由组件之间不存在父子关系时,要在组件之间传递数据就不好通过父子组件传值的方式了.那么下面我们来看看怎么办吧.

在页面中实现路由导航链接的两种方式

// 声明式

// 编程式
// 将自定义的router模块引入
import router from './router.js'
router.push(...)
//或者
//在vue实例中使用
this.$router.push

关于数据与参数的差异

为了避免理解差异导致的问题,我对数据和参数做如下规范:

  1. 参数:

    1. 就是我们常说的query
    2. 只能是数字或者字符串
    3. 长度有限制
  2. 数据

    1. 就是我们常说的params
    2. 类型不限:字符串/数字/数组/对象/布尔值均可
    3. 长度不限

具体实现

1.声明式

// 方法1
//=========================================
// 步骤1:引入vue-router
import VueRouter from "vue-router";
// 步骤2:创建一个vue-router实例
const router = new VueRouter({
routes: [
// 在path中指定占位符【通过 : 的形式指定】例如下面的:id
{ path: "/home/:id", component: HomeContainer }
]
});
// 如何传值: 通过在路径中指定位置传入想要的内容来传递数据到其他组件:例如下面id所在位置

// 在组件中怎么接收
// 在组件实例对象中 this.$router.params.id 就是传递过来那个值
// 在标签中 $router.params.id 就是传递过来那个值
// 方法2
==============================================
// 注意: 1. routes参数中的name必须要设置
// 步骤1:引入vue-router
import VueRouter from "vue-router";
// 步骤2:创建一个vue-router实例
const router = new VueRouter({
routes: [
{ path: "/home", name: 'home', component: HomeContainer }
]
});
// 步骤3:注意这里的name如果不在步骤2中声明这里是无法找到对应选项的(会报错)


// 步骤4:
// 接收这个值==>在上面我们看到这种方式可以传递query和params两种类型的参数,我们都可以在$router.params中找到,只需要通过 . 来调用对应的键就能得到值了
// 在组件实例对象中 this.$router.params.键 就是传递过来那个值
// 在标签中 $router.params.键 就是传递过来那个值

2.函数式

// 注意: 1. routes参数中的name必须要设置
// 步骤1:引入vue-router
import VueRouter from "vue-router";
// 步骤2:创建一个vue-router实例
const router = new VueRouter({
routes: [
{ path: "/home", name: 'home', component: HomeContainer }
]
});
// 步骤3:在js中通过代码的方式发起路由跳转并传递参数或数据
// 传递数据
router.push(name: 'home', params: { data: data })
// 传递参数
router.push({ path: '/home', query: { index: index }})
router.push({ path: `/home/${index}` })
// 特别注意: 如果传递path那么默认的 会将 params 忽略,就是说你就算传了也没有用,所以在使用params传递数据的时候一定要注意,不能使用path,只能使用name来指定路由的目标对象
// 步骤4:
// 接收这个值===>与声明式没有太大差异
// 在组件实例对象中 this.$router.params.键 就是传递过来那个值
// 在标签中 $router.params.键 就是传递过来那个值

总结

  1. 通过对比可以知道两种方式都可以传递参数数据
  2. 如果要在js代码中处理某些数据,处理完成后就跳转路由==>使用编程式
  3. 如果要通过某些已经绑定了数据的元素进行跳转==>声明式
  4. 按需选择

推荐阅读
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 本文详细介绍了在 Vue.js 前端框架中集成 vue-i18n 插件以实现多语言支持的方法。通过具体的配置步骤和示例代码,帮助开发者快速掌握如何在项目中实现国际化功能,提升用户体验。同时,文章还探讨了常见的多语言切换问题及解决方案,为开发人员提供了实用的参考。 ... [详细]
  • 2.2 组件间父子通信机制详解
    2.2 组件间父子通信机制详解 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 深入解析 Vue 中通过 $route.params 实现参数传递的方法与技巧
    本文深入探讨了在 Vue 框架中利用 `$route.params` 进行参数传递的方法和技巧。通过详细解析 `$route.params` 的工作机制及其与 `$route.query` 的区别,帮助开发者更好地理解和应用这一功能。文章不仅涵盖了基本的使用方法,还提供了实际案例和最佳实践,以便读者能够灵活运用这些技术,提升开发效率和代码质量。 ... [详细]
  • 深入解析 Vue 中的 Axios 请求库
    本文深入探讨了 Vue 中的 Axios 请求库,详细解析了其核心功能与使用方法。Axios 是一个基于 Promise 的 HTTP 客户端,支持浏览器和 Node.js 环境。文章首先介绍了 Axios 的基本概念,随后通过具体示例展示了如何在 Vue 项目中集成和使用 Axios 进行数据请求。无论你是初学者还是有经验的开发者,本文都能为你解决 Vue.js 相关问题提供有价值的参考。 ... [详细]
  • Egg.js 中间件详解与应用实例
    Egg.js 的中间件机制与 Koa 类似,均采用洋葱模型。每当开发一个中间件时,就像是在洋葱外增加了一层。本文将通过一个简单的中间件示例,详细介绍 Egg.js 中间件的编写方法及其应用场景,帮助读者更好地理解和使用这一功能。 ... [详细]
  • 基于 Vue 和 Element UI 实现的简洁登录界面设计
    本文介绍了一种利用 Vue.js 和 Element UI 框架构建的简洁登录界面设计。该设计不仅注重用户体验,还确保了界面的美观性和易用性。通过合理的布局和组件配置,实现了高效、响应式的登录功能,适用于多种前端应用场景。 ... [详细]
  • 如何撰写初级和高级前端开发者的专业简历
    如何撰写初级和高级前端开发者的专业简历 ... [详细]
  • 本文详细探讨了JavaScript中数组去重的各种方法,并通过实际代码示例进行了深入解析。文章首先介绍了几种常见的去重技术,包括使用Set对象、过滤方法和双重循环等。每种方法都附有具体的实现代码,帮助读者更好地理解和应用这些技术。此外,文中还讨论了不同方法在性能上的优劣,为开发者提供了实用的参考。 ... [详细]
  • 使用 Vuex 管理表单状态:当输入框失去焦点时自动恢复初始值 ... [详细]
  • 链栈虽然通常以数组作为底层实现,但也可以采用链表来构建Stack类。在这种情况下,空堆栈通过NULL指针表示。当新元素被压入堆栈时,它会被添加到链表的头部,从而实现高效的入栈操作。此外,出栈操作则通过移除链表头部的节点来完成,确保了操作的时间复杂度为O(1)。这种设计不仅简化了内存管理,还提高了动态数据处理的灵活性。 ... [详细]
  • 在最近的学习过程中,我对Vue.js中的Prop属性有了更深入的理解,并认为这一知识点至关重要,因此在此记录一些心得体会。Prop属性用于在组件之间传递数据。由于每个组件实例的作用域都是独立的,无法直接引用父组件的数据。通过使用Prop,可以将数据从父组件安全地传递到子组件,确保数据的隔离性和可维护性。 ... [详细]
  • Vue应用预渲染技术详解与实践 ... [详细]
  • 如何在JavaScript中实现字符到ASCII码的转换 ... [详细]
author-avatar
玉龙惊云诱惑_786_286
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有