Vue render函数 函数时组件 jsx
2024-08-23 19:51:48
常规组件使用
定义组件
components/list/list.vue
<template>
<ul>
<li v-for="(item, index) in list" :key="`item_${index}`">
{{ item.name }}
</li>
</ul>
</template>
<script>
export default {
name: 'List',
props: {
list: {
type: Array,
default: () => []
}
}
}
</script>
components/list/index.js
import list from './list'
export default list
组件使用
views/render-page.vue
<template>
<div>
<list :list=list></list>
</div>
</template>
<script>
import List from '_c/list'
export default {
data () {
return {
list: [
{ name: 'name1' },
{ name: 'name2' }
]
}
},
components: {
List
}
}
</script>
效果图:
定义函数式组件
components/render-dom.vue
export default {
function: true,
props: {
name: String,
renderFunc: Function
},
render: (h, ctx) => {
return ctx.props.renderFunc(h, ctx.props.name)
}
}
使用函数式组件
components/list/list.vue
<template>
<ul>
<li v-for="(item, index) in list" :key="`item_${index}`">
<span v-if="!render">{{ item.name }}</span>
<render-dom v-else :render-func="render" :name="item.name"></render-dom>
</li>
</ul>
</template>
<script>
import RenderDom from '_c/render-dom'
export default {
name: 'List',
components: {
RenderDom
},
props: {
list: {
type: Array,
default: () => []
},
render: {
type: Function,
default: () => {}
}
}
}
</script>
views/render-page.vue
<template>
<div>
<list :list=list :render="renderFunc"></list>
</div>
</template>
<script>
import List from '_c/list'
export default {
data () {
return {
list: [
{ name: 'name1' },
{ name: 'name2' }
]
}
},
components: {
List
},
methods: {
renderFunc (h, name) {
return h('i', {
style: {
color: 'green'
}
}, name)
}
}
}
</script>
效果图:
其余文件如函数式组件
views/render-page.vue
<template>
<div>
<list :list=list :render="renderFunc"></list>
</div>
</template>
<script>
import List from '_c/list'
export default {
data () {
return {
list: [
{ name: 'name1' },
{ name: 'name2' }
]
}
},
components: {
List
},
methods: {
renderFunc (h, name) {
return (
<i on-click={this.handleClick} style={{ color: 'blue' }}>{name}</i>
)
},
handleClick (e) {
console.log(e)
}
}
}
</script>
效果图:
最新文章
- codeforces B. Xenia and Spies 解题报告
- hdu 1240:Asteroids!(三维BFS搜索)
- ionic项目的一些简单操作
- Symfony VarDumper Component
- js使用
- 层模型--固定定位(position:fixed)
- Cantor表(中等)
- codevs 1031 质数环
- C++多线程学习之(一)——并发与多线程
- Dynamics CRM 2013 SP1 客户表单界面上联系人subgrid上的添加现有联系人功能缺失
- [Python] wxPython 高防Windows10记事本 (end...)
- c/c++ 多线程 std::call_once的应用
- Java synchronized解析
- org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manu
- 【BZOJ4155】[Ipsc2015]Humble Captains
- MVEAN_day05 Nexus私服对的搭建
- 学习笔记69—金蝶财务软件安装教程(KIS12.3,win10)
- c++ 如何获取多线程的返回值?(std::thread ,std::async)
- POJ 1166 暴力搜索 即 枚举
- linux 源码包之脚本安装包的安装
热门文章
- Python 读取word中表格数据、读取word修改并保存、替换word中词汇、读取word中每段内容,读取一段话中相同样式内容,理解Document中run
- 【Spring】看了这篇Spring事务原理,我才知道我对Spring事务的误解有多深!
- Petya and Graph/最大权闭合子图、最小割
- java中extends与implements的区别
- PythonCrashCourse 第四章习题
- (转)mybatis一级缓存二级缓存
- mac安装conda后,终端的用户名前面有一个(base),最佳解决方案
- 区块链入门到实战(21)之以太坊(Ethereum) – 分布式应用(DApp)
- ASP.NET Core3.1使用IdentityServer4中间件系列随笔(一):搭建认证服务器
- 焦大:seo该研究用户需求还是搜索算法