热门标签 | 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使用
    关键词: ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • 一、路由首先需要配置路由,就是点击good组件进入goodDetail组件配置路由如下{path:goodDetail,component:goodDetail}同时在good组件中写入如下点击事件,路由中加入 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 本文涉及源码版本为2.6.9准备工作down一份Vue源码,从package.json入手,找我们需要的代码1、package.json中的scripts,build:nodesc ... [详细]
  • #ReactivityFundamentals#DeclaringReactiveState ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • 本文主要介绍了gym102222KVertex Covers(高维前缀和,meet in the middle)相关的知识,包括题意、思路和解题代码。题目给定一张n点m边的图,点带点权,定义点覆盖的权值为点权之积,要求所有点覆盖的权值之和膜qn小于等于36。文章详细介绍了解题思路,通过将图分成两个点数接近的点集L和R,并分别枚举子集S和T,判断S和T能否覆盖所有内部的边。文章还提到了使用位运算加速判断覆盖和推导T'的方法。最后给出了解题的代码。 ... [详细]
  • 媒介本文的前身是源自github上的项目awesome-github-vue,但由于该项目上次更新时候为2017年6月12日,许多内容早已逾期或是许多近期优异组件未被收录,所以小肆 ... [详细]
  •     系统采用jeeplus框架(ssm+redis+shiro+mongodb+redis),默认是做了JSP未做前后端分离,由于业务需要已经多终端使用的需求(H5、小程序等) ... [详细]
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社区 版权所有