vue-router 源码分析——10.路由组件传参

这是对vue-router 3 版本的源码分析。
本次分析会按以下方法进行:

  1. 按官网的使用文档顺序,围绕着某一功能点进行分析。这样不仅能学习优秀的项目源码,更能加深对项目的某个功能是如何实现的理解。这个对自己的技能提升,甚至面试时的回答都非常有帮助。
  2. 在围绕某个功能展开讲解时,所有不相干的内容都会暂时去掉,等后续涉及到对应的功能时再加上。这样最大的好处就是能循序渐进地学习,同时也不会被不相干的内容影响。省略的内容都会在代码中以…表示。
  3. 每段代码的开头都会说明它所在的文件目录,方便定位和查阅。如果一个函数内容有多个函数引用,这些都会放在同一个代码块中进行分析,不同路径的内容会在其头部加上所在的文件目录。

本章讲解router中路由组件传参中的三种方式是如何实现的。
另外我的vuex3源码分析也发布完了,欢迎大家学习:
vuex3 最全面最透彻的源码分析
还有vue-router的源码分析:
vue-router 源码分析——1. 路由匹配
vue-router 源码分析——2. router-link 组件是如何实现导航的
vue-router 源码分析——3. 动态路由匹配
vue-router 源码分析——4.嵌套路由
vue-router 源码分析——5.编程式导航
vue-router 源码分析——6.命名路由
vue-router 源码分析——7.命名视图
vue-router 源码分析——8.重定向
vue-router 源码分析——9.别名

官网例子

  • 路由组件传参的作用是将组件和路由状态进行解耦,使得组件可以在多个不同url路径的路由中使用。
  • 官网例子虽然解释了使用props将路由和组件解耦的方法,但是没有直观地展示这么做的好处,下面是我写的一个例子:在这里例子可以看到,多个路由中重用这个UserProfile组件,而不管路由的参数是如何命名的。这样不仅体现了解耦,更体现了组件的复用性和易维护性。
const UserProfile = {
   
  props: ['userId'],
  template: '<div>User Profile for {
   { userId }}</div>'
}

const router = new VueRouter({
   
  routes: [
    {
    path: '/user/:id', component: UserProfile, props: route => ({
    userId: route.params.id }) },
    {
    path: '/profile/:userId', component: UserProfile, props: route => ({
    userId: route.params.userId }) },
  ]
})

三种模式

  • 布尔模式:如果 props 被设置为 true,route.params 将会被设置为组件属性。
  • 对象模式:如果 props 是一个对象,它会被按原样设置为组件属性。当 props 是静态的时候有用。
  • 函数模式:可以创建一个函数返回 props。这样你便可以将参数转换成另一种类型,将静态值与基于路由的值结合等等。
const User = {
   
  props: ['id&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值