vnode
获取vnode对象
- vm.$slots对象下的所有值
- vm.$scopedSlots对象的值返回一个函数,该函数执行后返回vnode对象
- directives自定义指令中钩子函数的参数3和参数4,例如钩子函数bind:
bind: function (el, binding, vnode, oldVnode) { ... ) - render渲染函数的参数1是一个返回vnode的函数,例如这里的参数h:
render: function (h) { ... } - 函数式组件context.children返回一个vnode数组
- 函数式组件context.slots返回一个函数,该函数运行后返回一个vnode组成的对象
————————————————————————————————————————————————————
vnode构造函数传参
tag?: string,
data?: VNodeData,
children?: ?Array,
text?: string,
elm?: Node,
context?: Component,
- 函数式组件和普通组件中该值不同
componentOptions?: VNodeComponentOptions,
asyncFactory?: Function
————————————————————————————————————————————————————
vnode对象的属性
this.tag = tag
this.data = data
- 包含以下
- attrs
- class:通过v-bind绑定在组件上的class,格式和v-bind相同
- staticClass:通过字符串绑定在组件上的class
- hook
- model
- on
- props
- staticStyle:原生样式对象,通过v-bind绑定到style上的这里也会体现
- style:通过v-bind绑定到组件上的对象
this.children = children
- 当表单项插入el-form时,该值为undefined
this.text = text
this.elm = elm
this.ns = undefined
this.context = context
- rendered in this component's scope(在此组件的范围内呈现)
this.fnContext = undefined
- real context vm for functional nodes(功能节点的实上下文虚拟机)
this.fnOptions = undefined
- for SSR caching(用于SSR缓存)
this.fnScopeId = undefined
- functional scope id support(功能范围ID支持)
this.key = data && data.key
this.componentOptions = componentOptions
this.componentInstance = undefined
- component instance(组件实例)
this.parent = undefined
- component placeholder node(组件占位符节点)
this.raw = false
- contains raw HTML? (server only)(包含原始HTML)
this.isStatic = false
- hoisted static node(吊装静节点)
this.isRootInsert = true
- necessary for enter transition check(输入转换检查所必需的)
this.isComment = false
- empty comment placeholder?(空注释占位符)
this.isCloned = false
- is a cloned node?(是克隆的节点)
this.isOnce = false
- is a v-once node?
this.asyncFactory = asyncFactory
- async component factory function(异步组件工厂函数)
this.asyncMeta = undefined
this.isAsyncPlaceholder = false
vnode的更多相关文章
- vue源码学习-vnode的挂载和更新流程
概述 本文主要介绍在视图的渲染过程中,Vue 是如何把 vnode 解析并挂载到页面中的.我们通过一个最简单的例子来分析主要流程: <div id="app"> {{s ...
- Vue源码终笔-VNode更新与diff算法初探
写完这个就差不多了,准备干新项目了. 确实挺不擅长写东西,感觉都是罗列代码写点注释的感觉,这篇就简单阐述一下数据变动时DOM是如何更新的,主要讲解下其中的diff算法. 先来个正常的html模板: & ...
- 说说VNode节点(Vue.js实现)
写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出.文章的原地址:https://github.com/an ...
- Vue源码之 diff Vnode
其实现在这个还没看懂,只能是初步看一下 _update调用__patch__方法,如果prevVnode(也就是oldVnode),旧vnode和新vnode对比,如果没有,就vnode就是vm.$e ...
- Vue 中是如何解析 template 字符串为 VNode 的?
在接触 React 时候,我只了解到通过 babel 可以把 JSX 转成 VNode(通过调用 React.createElement 方法),但是对其具体是如何转换的却不了解. 很明显,回答失败. ...
- vue VNode如何使用,是什么东西?
前言:element ui 中有些 demo 使用了 vue 的 VNode,但是 demo 毕竟不全,所以想要了解 VNode 到底是什么,如何写出符合自己业务的代码. vue 官网介绍:渲染函数 ...
- vue虚拟DOM源码学习-vnode的挂载和更新流程
代码如下: <div id="app"> {{someVar}} </div> <script type="text/javascript& ...
- vnode的挂载和更新流程 -- 简介.
来源 vnode原理 diff图解 <div id="app"> {{someVar}} </div> <script type="text ...
- 进程表/文件表/inode/vnode
一般我们讲,都说进程有文件描述符表,文件描述符表中的指针指向某个inode,这中间省略了file,dentry对象,对准确理解VFS结构无益,本文结合网络所查,并根据APUE8.3和LKD13.11章 ...
- vue自定义指令VNode详解(转)
1.自定义指令钩子函数 Vue.directive('my-directive', {bind: function () {// 做绑定的准备工作// 比如添加事件监听器,或是其他只需要执行一次的复杂 ...
随机推荐
- 一起了解 .Net Foundation 项目 No.1
.Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. Akka.NET Akka ...
- VFP控制Excel操作集
◆访问EXCEL:ExcelSheet = GetObject('','Excel.Sheet')返回结果为类,则成功.例:ExcelSheet = GetObject('','Excel.Sheet ...
- WLAN802.11
IEEE 802.11,1997年,原始标准(2Mbit/s,播在2.4GHz).DSSS, FHSS.该协议的一大缺点是它提供了太多的选择使得互操作性很难实现.所以它不严密,更像是一个beta标准, ...
- Mysql 5.7 主从复制的多线程复制配置方式
数据库复制的主要性能问题就是数据延时 为了优化复制性能,Mysql 5.6 引入了 “多线程复制” 这个新功能 但 5.6 中的每个线程只能处理一个数据库,所以如果只有一个数据库,或者绝大多数写操作都 ...
- Vscode使用
一. Vscode使用 1. 点击最下方的错误警告显示条,出现四个选项最后一个为终端命令(dos命令) 2. 提交代码输入提交信息,打勾提交,选择类似刷新按钮进行推送 3. 同步代码点击类似刷新按钮即 ...
- [jQuery]jQuery和DOM对象(三)
iQuery和DOM对象 用原生js获取来的对象就是DOM对象 // 1. DOM对象 var myDiv = document.get.querySelector('div'); // myDiv ...
- form表单 post 请求打开新页面
function postOpenWindow(URL, PARAMS, target) { if(target == null) target = "_blank"; var t ...
- webpack--介绍、安装及入门
最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代码,相信很多人都见过. <scr ...
- MySql数据库精简与绿色启动
1.下载MYSQL的zip包,解压ZIP包 版本低的相对需要的空间少,最好能在mysql-5.6以下,我测试的最高5.6版本为mysql-5.6.46,主要是里面有my.ini文件,高于5.6的版本里 ...
- JavaWeb学生公寓(宿舍)管理系统源码
开发环境: Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+MySQL数据库 运行效果图 源码及原文链接:https://javadao.xyz/forum.php?mod ...