当前位置: 首页 > news >正文

componentOptions配置选项的作用和用法

componentOptions 可以通过vnode.componentOptions来访问,用来挂载部分组件选项来使用的。包括

{ Ctor, tag, propsData, listeners,children } 。非组件的componentOptions为空。

// 源码中体现代码如下:
// return a placeholder vnode
  const name = Ctor.options.name || tag
  const vnode = new VNode(
    `vue-component-${Ctor.cid}${name ? `-${name}` : ''}`,
    data, undefined, undefined, undefined, context,
    { Ctor, propsData, listeners, tag, children },
    asyncFactory
  )

复制代码

用法

  1. 可以用来判断当前的vnode是不是组件。

    const isComponent = vnode.componentOptions
    复制代码
  2. 可以用来获取组件的名称

    const vonde = vnode.componentOptions.tag
    复制代码

    前提条件是在渲染组件的时候是采用字符串的形式,例如

    const comA = Vue.extend({})
    const comB = new Vue({
      components: {
        comA
      },
      render (h) {
        // return h('div', [h('comA')]) // 此时获取的vnode.componentOptions.tag为comA
        // return h('div', [h(comA)])  // 此时获取的vnode.componentOptions.tag为undefined
    })
    复制代码
  3. 最合适的获取组件名称的方式应该为:

    // 注意此时的componentOptions.tag为模版或者render书写的标签字符串,根据用户的书写可能不统一
    // 最好的方式还是使用componentOptions.Ctor.options.name
    const componentOptions = vnode.componentOptions;
    const componentName = componentOptions && componentOptions.Ctor.options.name || componentOptions.tag
    复制代码

相关文章:

  • 技本功丨收藏!斜杠青年与你共探微信小程序云开发(下篇)
  • 什么样人适合学平面设计?零门槛入门工具收藏
  • Luogu P4011 孤岛营救问题
  • 程序员修仙之路--突破内存限制的高性能排序
  • eslint 规则资料汇总
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • postman中参数设置描述
  • 一对一直播软件如何盈利?
  • 自定义PlantUML和C4Model的样式
  • Java Object类及其equals方法
  • C,java,Python,这些名字背后的江湖!
  • spring cloud微服务分布式云架构-单点登录(SSO)
  • 仓管云——企业云erp功能有哪些?
  • jvm在什么时候进行进行垃圾回收,在什么时候进行扩大内存
  • 第四周作业1
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • input的行数自动增减
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JavaScript服务器推送技术之 WebSocket
  • JSONP原理
  • STAR法则
  • win10下安装mysql5.7
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 观察者模式实现非直接耦合
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 如何选择开源的机器学习框架?
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 扩展资源服务器解决oauth2 性能瓶颈
  • (1)(1.9) MSP (version 4.2)
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (十六)串口UART
  • (顺序)容器的好伴侣 --- 容器适配器
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (五)网络优化与超参数选择--九五小庞
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • **PHP二维数组遍历时同时赋值
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET Core 成都线下面基会拉开序幕
  • .NET Standard 的管理策略
  • .NET 材料检测系统崩溃分析
  • .NET 发展历程
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .net项目IIS、VS 附加进程调试
  • .Net小白的大学四年,内含面经
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • [AIGC codze] Kafka 的 rebalance 机制
  • [Android]使用Git将项目提交到GitHub
  • [Angular] 笔记 9:list/detail 页面以及@Output