Vue render函数 函数时组件 jsx
常规组件使用
定义组件
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>
效果图:
Vue render函数 函数时组件 jsx的更多相关文章
- vue render 渲染函数
vue render 渲染函数 经常看到使用render渲染函数的示例,而且在一些特殊情况下,确实更好使用,可以更加有效地细分组件,因而借助vue-element-admin来学习一波 render函 ...
- Vue.js 2.x render 渲染函数 & JSX
Vue.js 2.x render 渲染函数 & JSX Vue绝大多数情况下使用template创建 HTML.但是比如一些重复性比较高的场景,需要运用 JavaScript 的完全编程能力 ...
- Vue之render渲染函数和JSX的应用
一.模板缺陷 模板的最大特点是扩展难度大,不易扩展.可能会造成逻辑冗余 <Level :type="1">哈哈</Level> <Level :typ ...
- vue render函数
基础 vue推荐在绝大多数情况下使用template来创建你的html.然而在一些场景中,你真的需要javascript的完全编程能力.这就是render函数.它比template更接近编译器 < ...
- Render渲染函数和JSX
1.Render函数:render是用来替换temlate的,需要更灵活的模板的写法的时候,用render. 官网API地址:https://cn.vuejs.org/v2/guide/render- ...
- 理解Vue中的Render渲染函数
理解Vue中的Render渲染函数 VUE一般使用template来创建HTML,然后在有的时候,我们需要使用javascript来创建html,这时候我们需要使用render函数.比如如下我想要实现 ...
- vue render函数解析
一.render 函数的作用: 写一些vue.js的template太繁琐,利用render,可以使用js来生成模板,更加灵活和简便. 二.使用render前提: 官网也说了.在深入渲染函数之前推荐阅 ...
- vue第十单元(动态组件 keep-alive(钩子函数) 递归组件(name) 组件命名约定)
第十单元(动态组件 keep-alive(钩子函数) 递归组件(name) 组件命名约定) #课程目标 熟练掌握动态组件的实现 掌握keep-alive缓存组件,以及相应的钩子函数 熟练掌握递归组件, ...
- 基于VueJS的render渲染函数结合自定义组件打造一款非常强大的IView 的Table
基于VueJS的render渲染函数结合自定义组件打造一款非常强大的IView 的Table https://segmentfault.com/a/1190000015970367
随机推荐
- linux下使用vim创建编辑文件
vi/vim 使用实例 如果要想用vim/vi创建一个文件(使用命令): vim test.txt 不管文件存在与否 直接输入 vi 文件名 就能够进入 vi 的一般模式 按下 i 进入输入模式( ...
- JavaScript设计模式之命令模式【命令解耦】
在讲解命令模式之前我们先来了解一个生活中的命令模式场景: 场景1: 医院看病抓药: 当你因为肾虚到医院看医生,医生一番操作之后得出结论:要吃个疗程[夏桑菊].[小柴胡](药名纯属虚构,真的肾虚就找医生 ...
- 什么情况下适合用UDP协议,什么情况下适合用TCP协议?
总的来说 TCP协议提供可靠的服务, UDP协议提供高效率的服务. 高可靠性的TCP服务提供面向连接的服务,主要用于一次传输大量报文的情形, 如文件传输,远程登录等: 高效率的UDP协议提供无连接的数 ...
- golang time包
1.时间类型 time.Time类型表示时间. func demo() { now := time.Now() //获取当前时间 fmt.Printf("Now:%v\n", no ...
- 小白学PyTorch 动态图与静态图的浅显理解
文章来自公众号[机器学习炼丹术],回复"炼丹"即可获得海量学习资料哦! 目录 1 动态图的初步推导 2 动态图的叶子节点 3. grad_fn 4 静态图 本章节缕一缕PyTorc ...
- Docker-Docker与IPV6
公司计划在2020年前完成IPV6化改造,于是我先行查阅了一些资料了解Docker进行IPv6化的可能性. 预计明年正式开始测试. 方法一.使容器中的服务支持IPv6地址 不为容器中的服务特别分配IP ...
- 微信商户H5支付申请不通过被驳回解法,拒绝提示:网站有不实内容或不安全信息
H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付.主要用于触屏版的手机浏览器请求微信支付的场景.可以方便从外部浏览器唤起 ...
- “DNAT+云链接+CDN”加速方案,助力出海企业落地生长
摘要:“DNAT+云链接+CDN”加速方案,真正释放技术红利,真诚助力企业出海. 随着国内互联网行业的人口红利逐渐消失,本土互联网市场竞争不断加剧,加之国家多项“走出去”政策的推动,越来越多的中国互联 ...
- 赫然:怎样学习seo优化技术
http://www.wocaoseo.com/thread-79-1-1.html 今天的题目是学习SEO起步阶段每个人都要问的.SEO怎么学?如何进阶SEO技能?都包括哪些知识?笔者也自己总结过一 ...
- 加载PHP的配置扩展文件
一.在PHP的安装目录中去创建一个 php.ini 的配置文件 复制php.ini-development文件,修改成php.ini文件(注意:不要多加一个空格或标点什么的).其中 php.ini ...