小编给大家分享一下Vue Render函数创建DOM节点的案例,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
虽然在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)
]
)
}
})
看完了这篇文章,相信你对Vue Render函数创建DOM节点的案例有了一定的了解,想了解更多相关知识,欢迎关注天达云行业资讯频道,感谢各位的阅读!