vue中使用jsx

为什么需要使用jsx呢?这个需要搞清楚

其实vue官方也说了,对于那些非常多v-if v-else的情况,就可以尝试使用render函数或者jsx,不过render函数写简单的结构还行,结构复杂了就很蛋疼了,而既然用到render了,肯定是有一些复杂的逻辑判断,结构肯定简单不了,所以用jsx就是一个比较好的选择了
今天自己尝试了一下,也是借鉴了网上的一些例子,不过在使用图片的时候发现事情好像有点难搞
<script>
import img_more from '../assets/images/pk/icon-more.png';
export default {
name: 'More',
props: {
type: {
required: true
}
},
data() {
return {
text: 'xxxxxxxjsx',
role: 1
}
},
render() {
return (
<div
class={{
btn: true,
'btn-success': this.type === 'success',
'btn-danger': this.type === 'danger',
'btn-warning': this.type === 'warning'
}}
>
{this.text}
/*这种写法是可以的,图片路径通过变量传递进来,此时可以显示图片*/
<img class={{more: true}} onClick={this.handleClick} src={img_more} alt="" />
/* 这种写法,直接写图片相对路径,无法显示图片 是不是很蛋疼,(暂时还不知道针对图片的具体规则)*/
<img src="../assets/images/pk/icon-more.png" alt="" />
</div>
);
},
methods: {
handleClick() {
console.log('点击了', this.role);
}
}
}
</script> <style scoped lang="scss">
.more{
width: 36px;
height: 36px; //设置背景图片也是可以正常显示图片的
/*background: url("../assets/images/pk/icon-more.png") no-repeat;*/
/*-webkit-background-size: 100%;*/
/*background-size: 100%;*/
} .btn{
width: 100px;
height: 50px;
&.btn-success{
background-color: yellowgreen;
}
} </style>

从上面的代码中可以学习的有

  1. class的写法,包含已知的class以及根据变量来动态添加的
  2. 事件的添加

这个组件自己还只是开了个头,里面的逻辑还没有尝试,待我写完了在来把本文写完

vue中使用jsx的更多相关文章

  1. 在Vue中使用JSX,很easy的

    摘要:JSX 是一种 Javascript 的语法扩展,JSX = Javascript + XML,即在 Javascript 里面写 XML,因为 JSX 的这个特性,所以他即具备了 Javasc ...

  2. vue中使用JSX报错,如何解决

    Support for the experimental syntax 'jsx' isn't currently enabled (32:12): 30 | }, 31 | render() { & ...

  3. 在vue中使用jsx语法

    什么是JSX? JSX就是Javascript和XML结合的一种格式.React发明了JSX,利用HTML语法来创建虚拟DOM.当遇到<,JSX就当HTML解析,遇到{就当JavaScript解 ...

  4. vue中的jsx

    一.配置文件package.json { "name": "vuetest", "version": "1.0.0", ...

  5. 记录在vue中使用jsx时踩过的坑

    使用方法及细节就不一一说了. 1.给input或者textarea绑定value时,出现失效的问题.解决方法:https://github.com/vuejs/babel-plugin-transfo ...

  6. vue中书写JSX一些坑-特殊属性名

    举例说明, T1和T2引用Sub时, key2会出现在props以及data.attrs中, 而key则在data中 const Sub = ({data, props}) => { conso ...

  7. Vue中使用JSX语法

    一 项目结构 二 App组件 <template> <div id="app"> <fruit/> </div> </temp ...

  8. vue中的页面渲染方案

    一.模板渲染 <div id="J_render_app"> <ul v-if="items.length"> <li v-for ...

  9. 谈谈 Vue 模板和 JSX

    工具链 从学习曲线角度来讲,结合我个人体会,React 学习路线是比 Vue 陡峭的,这个和 JSX.Template 有关吗?当然有.在 React 中使用 JSX,众所周知, JSX 需要经过 T ...

随机推荐

  1. 熟透vue手机购物商城开发的重要性

    带手机验证码登陆, 带全套购物车系统 带数据库 前后端分离开发 带定位用户功能 数据库代码为本地制作好了 带支付宝支付系统 带django开发服务器接口教程 地址:   https://www.dua ...

  2. Codeforce 1098-A

    A. Sum in the tree   Mitya has a rooted tree with nn vertices indexed from 11 to nn, where the root ...

  3. P3119 [USACO15JAN]Grass Cownoisseur G

    P3119 [USACO15JAN]Grass Cownoisseur G tarjan缩点+分层图上跑 spfa最长路 约翰有 \(n\) 块草场,编号 \(1\) 到 \(n\),这些草场由若干条 ...

  4. Phoenix and Distribution(字典序贪心)

    \(给定一串字母,分成k份,使得最大字典序最小.(字母可以任意组合)\) \(------------------------------issue~------------------------\ ...

  5. Constant Palindrome Sum(贪心*RMQ)

    传送门 怎么说呢,想了几个小时没做出来实在可惜. \(\color{Red}{首先肯定想到暴力嘛!但是x定值有那么多值可以取,怎么办呢?}\) 但是题目中有一个很关键的条件 \[a[i]>=1\ ...

  6. js获取session对象

  7. mybatis传递参数的方法

    一.传递一个参数 例:根据员工编号查询员工的基本信息 1.在dao接口中声明一个方法 2.在mapper中实现该方法 3.测试 /** * 传递一个参数 */ public class Test02 ...

  8. java制作甘特图

    今日来做一下甘特图.网上搜到了这个源码,但是导的jar包,并没有给我.swiftganttdemo但是名为swiftgantt制作:所以灵机一动在网上搜到了swiftangantt组件:在组件中找到了 ...

  9. 第六章第二十题(计算一个字符串中字母的个数)(Count the letters in a string) - 编程练习题答案

    *6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法头计算字符串中的字母个数: public static int countLetters(String s) 编写一个测试程序,提示 ...

  10. Cassandra 简介

    Cassandra是云原生和微服务化场景中最好的NoSQL数据库.我信了~ 1. Cassandra是什么 高可用性和可扩展的分布式数据库 Apache Cassandra™是一个开源分布式数据,可提 ...