博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue核心技术-39,vue-router-向路由组件传递数据
阅读量:2222 次
发布时间:2019-05-08

本文共 2866 字,大约阅读时间需要 9 分钟。

一,前言

介绍组件时,知道可以使用props选项向传入对应的参数,也就是父到子通信本篇介绍vue-router提供的通过路由进行参数传递方式本篇相关代码基于前篇修改而来,和本篇无关的注释将被删除,请查看前篇

二,向路由组件传递参数

为了测试路由组件传递参数的功能,在商品模块->商品列表下,添加一个商品详情路由组件通过点击商品列表下的商品显示对应的商品详情商品详情组件中,根据path中传递的商品id属性值进行商品对象查询,并显示由于需要添加一个商品详情路由组件,所以还是那老三步添加一个路由组件分3步1,定义路由组件2,在router中注册路由3,使用路由:在调用组件中写跳转
和显示
第一步,定义路由组件

新增ProductDetail.vue

商品险详情组件,通过this.$route.params.id获取外部传入的id属性值在数据集合中筛选当前id的商品对象,并显示由于mounted钩子只执行一次,切换路由不触发,所以只能用于首次加载对于后续的切换,需要对路有对象进行监听,获取点击的id属性值,重新获取商品对象
第二部,注册路由
/* *  路由器对象模块 */import Vue from 'vue'import VueRouter from 'vue-router'import Product from '../pages/Product.vue'import Home from '../pages/Home.vue'import News from '../pages/News.vue'import ProductList from '../pages/ProductList.vue'// 引入路由组件import ProductDetail from '../pages/ProductDetail.vue'Vue.use(VueRouter)export default new VueRouter ({  // 注册路由  routes: [    {      path: '/home',      component: Home    },    {      path: '/product',      component: Product,      children: [        {          path: '/product/news',          component: News        },        {          path: 'productList',          component: ProductList,          children: [            {              path:'detail/:id',      //简写,同/product/productList/detail/:id              component: ProductDetail            }          ]        },        {          path: '',          redirect: '/product/news'        }      ]    },    {      path: '/',      redirect: '/home'    }  ]})
在路由器配置文件中,引入新创建的路由组件设置商品详情为商品列表组件的嵌套组件设置path:/product/productList/detail/:id传递参数id属性值
第三部,使用路由
商品详情路由组件为商品列表组件的嵌套组件所以商品详情路由组件在商品列表组件被使用在商品列表组件添加跳转
和显示

PoductList.vue


三,运行程序

点击第一条数据,跳转至:

id1

显示了第一条对应的数据

当点击第二条数据,跳转至

id2


四,props传值

路由组件也支持props进行传值例如修改首页Home.vue,添加props参数名并显示

Home.vue:

修改根组件,对路由组件传值

首页运行结果:

home


五,结尾

本例中使用了`/product/productList/detail/${product.id}`在链接中进行传值所以取值时使用了this.$route.params.id,在params中取值如果使用get式的传值,如`/product/productList/detail?id=${product.id}`取值就需要使用this.$route.query.id,在query中取值vue-router还支持多种传参方式,参考文档:https://router.vuejs.org/zh/guide/essentials/passing-props.html下一篇介绍vue-router编程式路由
你可能感兴趣的文章
搞懂分布式技术1:分布式系统的一些基本概念
查看>>
搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法
查看>>
搞懂分布式技术3:初探分布式协调服务zookeeper
查看>>
搞懂分布式技术4:ZAB协议概述与选主流程详解
查看>>
搞懂分布式技术5:Zookeeper的配置与集群管理实战
查看>>
搞懂分布式技术6:Zookeeper典型应用场景及实践
查看>>
搞懂分布式技术10:LVS实现负载均衡的原理与实践
查看>>
搞懂分布式技术11:分布式session解决方案与一致性hash
查看>>
搞懂分布式技术12:分布式ID生成方案
查看>>
搞懂分布式技术13:缓存的那些事
查看>>
搞懂分布式技术14:Spring Boot使用注解集成Redis缓存
查看>>
搞懂分布式技术15:缓存更新的套路
查看>>
搞懂分布式技术16:浅谈分布式锁的几种方案
查看>>
搞懂分布式技术17:浅析分布式事务
查看>>
搞懂分布式技术18:分布式事务常用解决方案
查看>>
搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务
查看>>
搞懂分布式技术20:消息队列因何而生
查看>>
搞懂分布式技术21:浅谈分布式消息技术 Kafka
查看>>
后端技术杂谈1:搜索引擎基础倒排索引
查看>>
后端技术杂谈2:搜索引擎工作原理
查看>>