Vue中Jsx的使用
什么是JSX?
JSX就是Javascript和XML结合的一种格式。React发明了JSX,利用HTML语法来创建虚拟DOM。当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析。
应用场景是什么?
当需要用render函数写一个复杂的组件时,可以考虑使用jsx的方式。让代码结构简单,降低开发难度,提升易读性。
举个栗子
vue.js官网demo:https://cn.vuejs.org/v2/guide/render-function.html#JSX
import AnchoredHeading from './AnchoredHeading.vue'
new Vue({
el: '#demo',
render: function (h) {
return (
<AnchoredHeading level={1}>
<span>Hello</span> world!
</AnchoredHeading>
)
}
})
我开发过程中的栗子:
1.调用
{
title: "组织机构",
resizable: true,
minWidth: 200,
align: "left",
key: "organizeName",
render: (h, params) => {
return (
<TemplateMainOrgs {...{ props: { organizeName: params.row.organizeName } }} ></TemplateMainOrgs>
)
}
},
2.定义

<template>
<Tooltip placement="top" :class="{detailClassFix:isDetailPage}">
<div class="ellipsis-2line" style="-webkit-box-orient: vertical;" v-if="orgs.length>0">
<div v-for="(org,index) in orgs" :key="index">
<p>{{org}}</p>
</div>
</div>
<div class v-else>--</div>
<div slot="content">
<div class v-if="orgs.length>0">
<div v-for="(org,index) in orgs" :key="index">
<p>{{org}}</p>
</div>
</div>
<div class v-else>--</div>
</div>
</Tooltip>
</template>
<script>
export default {
props: {
organizeName: {
type: String,
required: true,
default: '',
},
parentName: {
type: String,
required: false,
},
},
data () {
return {
}
},
computed: {
isDetailPage: function () {
return this.parentName == 'detail'
},
orgs: function () {
return this.handleName() || []
},
},
created () {
},
methods: {
handleName () {
if (this.organizeName) {
let arr = this.organizeName.split(',')
return arr.map(item => {
return item.replaceAll('*', ' > ')
})
}
}
},
}
</script>
<style lang="less" scoped>
.detailClassFix {
vertical-align: top;
.ellipsis-2line {
-webkit-line-clamp: 8;
}
}
</style>
可以看出,由于需要渲染的内容及其复杂,不易于使用render函数直接书写,因此将内容单独为一个组件,在此引入。而且抽取出来的组件也可以用在其他地方。
如何给jsx组件传值
Vue中Jsx的使用的更多相关文章
- Vue中jsx的最简单用法
最终页面显示效果为 <div class="open-service" style="color: #0199f0; cursor: pointer;"& ...
- 在vue中使用jsx语法
什么是JSX? JSX就是Javascript和XML结合的一种格式.React发明了JSX,利用HTML语法来创建虚拟DOM.当遇到<,JSX就当HTML解析,遇到{就当JavaScript解 ...
- vue中使用jsx
vue中使用jsx 为什么需要使用jsx呢?这个需要搞清楚 其实vue官方也说了,对于那些非常多v-if v-else的情况,就可以尝试使用render函数或者jsx,不过render函数写简单的结构 ...
- 在Vue中使用JSX,很easy的
摘要:JSX 是一种 Javascript 的语法扩展,JSX = Javascript + XML,即在 Javascript 里面写 XML,因为 JSX 的这个特性,所以他即具备了 Javasc ...
- vue中使用JSX报错,如何解决
Support for the experimental syntax 'jsx' isn't currently enabled (32:12): 30 | }, 31 | render() { & ...
- Vue 中渲染字符串形式的组件标签
在vue中如果要渲染字符串形式的标签,vue 提供了 v-html 指令,可以很方便的渲染出来.但是如果这个标签是一个组件,或者element-ui 的组件时,就不能解析出来了,因为v-html 只能 ...
- vue中的页面渲染方案
一.模板渲染 <div id="J_render_app"> <ul v-if="items.length"> <li v-for ...
- 理解MVVM在react、vue中的使用
理解MVVM在react.vue中的使用 一:什么是MVC.为什么不用MVC 1:MVC的含义: M(modal):是应用程序中处理数据逻辑的部分. V (view) :是应用程序中数据显示的部分. ...
- vue中如何不通过路由直接获取url中的参数
前言:为什么要不通过路由直接获取url中的参数? vue中使用路由的方式设置url参数,但是这种方式必须要在路径中附带参数,而且这个参数是需要在vue的路由中提前设置好的. 相对来说,在某些情况下直接 ...
随机推荐
- 狂神说SpringBoot11:Thymeleaf模板引擎
狂神说SpringBoot系列连载课程,通俗易懂,基于SpringBoot2.2.5版本,欢迎各位狂粉转发关注学习. 微信公众号:狂神说(首发) Bilibili:狂神说Java(视频) 未经作 ...
- 571A Lengthening Sticks
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- JavaScript——六
magin和padding的区别:https://www.cnblogs.com/zxnn/p/8186225.html magin:兄弟之间的 padding:父子关系 body和网页边框左右距离上 ...
- 牛客编程巅峰赛S1第11场 - 黄金&钻石 C.牛牛找子集 (二分)
题意:有一\(n\)个数,从中找数构成相同的子集,要求子集元素个数为\(k\),求构成子集个数最多的情况,输出子集(字典序最小). 题解:我们可以对子集的个数二分答案,首先用桶记录每个元素的个数,然后 ...
- Docker文件挂载总结
Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定. 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定: # docker ...
- Linux网络文件下载
wget 以网络下载 maven 包为例 wget -c http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-ma ...
- 忘记Mysql的root用户密码处理方法(以mysql 5.5.33为例)
1.修改mysql服务器的脚本 ~]#vi /etc/rc.d/init.d/mysqld #找到$bindir/mysqld_safe --datadir="$datadir" ...
- System.Windows.Forms.Help
在开发过程中,基本都需要实现帮助功能,而一般帮助功能就是打开一个帮助文档,System.Windows.Forms提供了Help类用于打开帮助文档,挺方便的. Help类提供的方法如下: Name ...
- Leetcode(5)-最长回文子串(包含动态规划以及Manacher算法)
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &quo ...
- C++:Process returned -1073741571 (0xC00000FD)
启动程序无法输入,然后崩溃报错Process returned -1073741571 (0xC00000FD) 原因: 栈溢出了 栈的默认内存空间为1M,如果函数中定义的数组太大会导致内存溢出. 解 ...