vue中的render函数介绍
render函数是什么
简单的说,在 vue 中我们使用模板HTML语法组建页面的,使用 render
函数我们可以用js语言来构建DOM。
因为vue是虚拟DOM,所以在拿到template
模板时也要转译成VNode的函数,而用render
函数构建DOM,vue就免去了转译的过程。
当使用render
函数描述虚拟DOM时,vue提供一个函数,这个函数是就构建虚拟DOM所需要的工具。官网上给他起了个名字叫createElement
,还有约定的简写叫h
,vm中有一个方法_c
,也是这个函数的别名。
先看官网对 createElement
的介绍:
// @returns {VNode}
createElement(// {String | Object | Function}// 一个 HTML 标签字符串,组件选项对象,或者// 解析上述任何一种的一个 async 异步函数,必要参数。'div',// {Object}// 一个包含模板相关属性的数据对象// 这样,您可以在 template 中使用这些属性。可选参数。{// (详情见下一节)},// {String | Array}// 子节点 (VNodes),由 `createElement()` 构建而成,// 或使用字符串来生成“文本节点”。可选参数。['先写一些文字',createElement('h1', '一则头条'),createElement(MyComponent, {props: {someProp: 'foobar'}})]
)
就是说createElement(params1, params2, params3)
接受三个参数,每个参数的类型官方介绍已经说明。
render函数怎么用
render: (h) => {return h('div', {//给div绑定value属性props: {value: ''},//给div绑定样式style: {width: '30px'},//给div绑定点击事件 on: {click: () => {console.log('点击事件')}},})
}
深入 data 对象
有一件事要注意:正如在模板语法中,v-bind:class
和 v-bind:style
,会被特别对待一样,在 VNode 数据对象中,下列属性名是级别最高的字段。该对象也允许你绑定普通的 HTML 特性,就像 DOM 属性一样,比如 innerHTML
(这会取代 v-html
指令)。
{// 和`v-bind:class`一样的 API'class': {foo: true,bar: false},// 和`v-bind:style`一样的 APIstyle: {color: 'red',fontSize: '14px'},// 正常的 HTML 特性attrs: {id: 'foo'},// 组件 propsprops: {myProp: 'bar'},// DOM 属性domProps: {innerHTML: 'baz'},// 事件监听器基于 `on`// 所以不再支持如 `v-on:keyup.enter` 修饰器// 需要手动匹配 keyCode。on: {click: this.clickHandler},// 仅对于组件,用于监听原生事件,而不是组件内部使用// `vm.$emit` 触发的事件。nativeOn: {click: this.nativeClickHandler},// 自定义指令。注意,你无法对 `binding` 中的 `oldValue`// 赋值,因为 Vue 已经自动为你进行了同步。directives: [{name: 'my-custom-directive',value: '2',expression: '1 + 1',arg: 'foo',modifiers: {bar: true}}],// Scoped slots in the form of// { name: props => VNode | Array<VNode> }scopedSlots: {default: props => createElement('span', props.text)},// 如果组件是其他组件的子组件,需为插槽指定名称slot: 'name-of-slot',// 其他特殊顶层属性key: 'myKey',ref: 'myRef'
}
vue中的render函数介绍相关推荐
- vue中的render函数
vue中的render函数的使用 我们先看一个例子: render: function (createElement) {return createElement('h1', this.blogTit ...
- vue中的render函数、h()函数、函数式组件
一.什么是render 官网:用于编程式地创建组件虚拟 DOM 树的函数. 在我们使用webpack脚手架创建项目时,都能在main.js中看到一个render函数 import Vue from ' ...
- Vue中的 h 函数
Vue中的 h 函数 在了解 h 函数之前,我们需要先了解 虚拟DOM, 什么是 虚拟DOM? 虚拟DOM 是使用JS 对象模拟真实的DOM结构,用JavaScript 对象描述DOM 的层次结构.D ...
- Numpy中np.mashgri() 函数介绍及2种应用场景
@[toc](Numpy中np.mashgri() 函数介绍及2种应用场景 文章目录:) 近期在好几个地方都看到meshgrid的使用,虽然之前也注意到meshgrid的用法. 但总觉得印象不深刻,不 ...
- java中正则表达式函数_java正则表达式PHP中的正则表达式函数介绍
java正则表达式PHP中的正则表达式函数介绍 正则表达式(Regular Expression) 正则表达式系统: 1.POSIX 2.Perl PHP中使用的regex是PCRE: NOTE:PC ...
- vue 执行函数this_在vue中使用回调函数,this调用无效的解决
let self = this //使用新变量替换this,以免this无效 //updatestudentinfotoserver是一个将本身部分数据异步上传的接口,接收三个参数,其中第一个是数据, ...
- vue中class绑定函数
vue中class绑定函数 vue+class类应用函数,增加class类名 相关博客: v-for循环.v-if 动态判断+动态赋值+操作class类:(计算属性)强制绑定函数 以上就是关于&quo ...
- php spl函数,PHP SPL标准库中的常用函数介绍
这篇文章主要介绍了PHP SPL标准库中的常用函数介绍,本文着重讲解了spl_autoload_extensions().spl_autoload_register().spl_autoload()三 ...
- mounted钩子函数_怎样实现Vue中mounted钩子函数获取节点高度
这次给大家带来怎样实现Vue中mounted钩子函数获取节点高度,实现Vue中mounted钩子函数获取节点高度的注意事项有哪些,下面就是实战案例,一起来看一下. 遇到的问题 最近在开发一个Vue的项 ...
最新文章
- 为什么创业者专注做一个产品最好?
- mysql批量生成修改表和列注释语句
- css3案例分析,CSS3动画/动画库以及案例分析(上)
- php nodelist,了解NodeList、HTMLCollection以及NamedNodeMap的使用(代码)
- java scanner类 构造器,Java Scanner类
- XenApp备份方法
- Atitit 控制中心快速启动面板quick launcher
- Android开发之获取手机通讯录
- 优秀项目经理应具备的素质和能力
- python 爬虫图片打不开_爬虫下载图片打不开是什么原因,最新简易爬虫教程
- 基于python的论文前言怎么写_毕业论文前言怎么写
- 数据耦合的代码例子c语言,代码耦合的处理
- 关于《完全用Linux工作》的思考
- 人称小Home Assistant版的智能生态系统,智汀究竟可控制多少智能设备?
- OBS Studio(obs录屏软件)官方中文版V27.2.4 | 最新obs中文版百度云下载
- Javascript日期的Format与Parse
- 超声波雷达介绍及车位探测信号处理方法
- 三星计划降低存储芯片产能维持高价凸显它的垄断地位
- 【BLE】nrf connect配置为服务端进行蓝牙主从通信实验
- 跟着老猫来搞GO-内建容器slice
热门文章
- mysql linux root密码忘记了怎么办,linux下忘记mysql的root密码解决办法 | 严佳冬
- mac环境下配置nginx
- ETL PostgreSQL in Oracle ODI 12c
- AS使用NDK Cmake方式依赖第三方库注意事项
- 大数据技术存在局限 经验直觉不可或缺
- Protobuf动态解析那些事儿
- linux expect自动登录ssh,ftp
- 2.1、StopWatch 启动与停止(ok)
- vscode配置c 环境_SAST Weekly教你在macOS上用VS Code配置C/C++编程环境
- Spring-BeanDefinitionRegistryPostProcessor接口