Vue Render函数原理及代码实例解析
作者:viewts 时间:2023-07-02 16:34:38
简单的说,在vue中我们使用模板HTML语法组建页面的,使用render函数我们可以用js语言来构建DOM
因为vue是虚拟DOM,所以在拿到template模板时也要转译成VNode的函数,而用render函数构建DOM,vue就免去了转译的过程。
当使用render函数描述虚拟DOM时,vue提供一个函数,这个函数是就构建虚拟DOM所需要的工具。官网上给他起了个名字叫createElement。还有约定的简写叫h
虽然在render里使用createElement函数创建DOM节点不是很直观,但是在部分独立组件的设计中还是可以满足一些特殊需求的。一个简单的render示例如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="app">
<my-component :list="list"></my-component>
</div>
<script src="vue.js"></script>
<script>
Vue.component('my-component', {
props: {
list: {
type: Array,
default: () => []
}
},
render(createElement) {
if (this.list.length) {
return createElement('ul', this.list.map(item => createElement('li', item)))
} else {
return createElement('p', 'Empty list')
}
}
})
new Vue({
el: '#app',
data: {
list: ['html', 'css', 'javascript']
}
})
</script>
</body>
</html>
另外,由于v-if,v-else,v-show等指令都无法在render里使用,需要自己手动实现,拿常用的v-model举个栗子:
Vue.component('my-component', {
data() {
return {
message: ''
}
},
render(createElement) {
return createElement(
'div',
[
createElement(
'input',
{
on: {
input: e => this.message = e.target.value
}
}
),
createElement('p', this.message)
]
)
}
})
来源:https://www.cnblogs.com/viewts/p/11208452.html
标签:Vue,Render,函数
0
投稿
猜你喜欢
mysql性能优化之索引优化
2024-01-15 13:51:44
对python中的pop函数和append函数详解
2021-10-09 09:11:32
Vue生产和开发环境如何切换及过滤器的使用
2024-05-09 15:20:31
Go语言接口用法实例
2024-02-04 22:27:30
python 破解加密zip文件的密码
2021-01-10 19:59:39
Go语言中Goroutine的设置方式
2024-05-13 10:40:43
用Python实现一个简单的线程池
2023-09-21 15:14:56
python实现csv格式文件转为asc格式文件的方法
2021-10-12 19:10:37
mysql中的load命令使用方法
2024-01-21 05:39:23
Scripting.Dictionary 对象
2007-10-13 09:46:00
matplotlib.pyplot.matshow 矩阵可视化实例
2022-01-04 02:57:21
基于Python实现简易的植物识别小系统
2021-10-09 21:30:57
MySQL中创建表的三种方法汇总
2024-01-21 09:40:35
Python中的Function定义方法第1/2页
2021-05-10 20:33:49
Python使用Asyncio进行web编程方法详解
2022-08-11 17:03:56
Python短信轰炸的代码
2022-11-03 17:35:04
如何使用scrapy中的ItemLoader提取数据
2021-01-10 07:02:06
Go使用Gin+mysql实现增删改查的详细实例
2024-01-20 20:38:43
Python中DJANGO简单测试实例
2022-09-09 16:36:53
Python中的文件输入输出问题
2022-06-12 05:22:24