App.vue
<!-- render 函数 -->
<Heading tag="ul"></Heading> // 向下传递ul 标签 与this.tag 对应
<script>
import Heading from './views/Heading.vue';
export default {
name: 'App',
components: {
Heading
}
......
}
</script>
Heading.vue
export default {
name: "Heading",
props: {
tag: String // 子组件接收父组件传的 tag=ul 值
},
data() {
return {
people: ['你好', '我好', '大家好']
}
},
render(createElement, context) { // render 函数
// 创建 ul 标签
return createElement(this.tag, {}, this.people.map((name, index) => {
return createElement('li', { // 创建 li 标签
// attrs 添加属性,添加点击 on click 事件
attrs: {class: 'red', id: index}, on: {
click: () => {
console.log('li click')
}
}
}, name)
}));
}
}
</script>
结果显示一个ul 三个 li 标签:
- 你好
- 我好
- 大家好