首页 > 其他分享 >什么是JSX/TSX

什么是JSX/TSX

时间:2023-03-21 14:11:44浏览次数:32  
标签:render JSX 什么 value TSX type 代码

什么是JSX/TSX?

JSX是JavaScript XML的简写,其实是函数调用和表达的语法糖,最终会转化为生成虚拟DOM 的js代码。而TSX是TypeScript XML的简写,是基于ts代码开发。

使用JSX/TSX优点?

写代码更快、提高开发效率
组件库代码比业务代码具有更强的动态性,可以很灵活地控制动态 DOM 片段
类型安全,在渲染之前会转义,防止注入攻击(XSS攻击)
可以利用 js/ts 来表达各种各样的逻辑,十分灵活
用 tsx 编写的组件,可以享受到 props 的类型提示
执行更快,因为它在编译为 JavaScript/typsScript代码后进行了优化

JSX/TSX写法注意点

  1. @ 替换成 on,方法首字母大写;如:@click 改为 onCLick,onClick={() => this.fun()};
  2. v-bind:ceshi="值" 替换成 ceshi=
  3. 不能使用if else语句,使用三元运算(conditional)替代
  4. 不支持vue修饰符
  5. 不支持$attrs和$listeners
  6. render()中的注释要写在{}内
  7. 允许模板中插入数组{arr},数组会自动展开
 arr = [
        <h1>1</h1>,
        <h2>2</h2>,
      ]
  1. 数组循环不用v-for,直接写this.fun(); 如select的option
<select>
  {this.renderOption(this.list, 'label', 'value')}
</select>

renderOption(data: any[], label: string, value: string) {
return data.map((item) => );
}
9、v-model: 使用value={this.value}

render() {
    return (
      <div class="input__wrap">
        <div>initValue的值:{this.value}</div>
        <el-input
          value={this.initValue}
          on-input={val => {
            this.initValue = val
          }}
        />
      </div>
    )
  }
}
render语法
props 、class、on(事件)、slots属性

  render(h) {
    return h(
      'div',
      {
        class: {
          default: true,
          first: this.type == 1,
          second: this.type == 2,
          third: this.type == 3
        },
        props:{
          value: this.value,
          type: 'border-card'
        }
        on: {
          click: this.onShowTypeClick
        }
      },
      [this.$slots.default, this.$slots.tag]
    )
  },
  methods: {
    onShowTypeClick() {
      console.log(this.type)
    }
  }
render函数的功能创建虚拟节点就是代替template所以 在.vue 文件中必须省略template标签

标签:render,JSX,什么,value,TSX,type,代码
From: https://www.cnblogs.com/ywjbalabala/p/17239832.html

相关文章

  • Java基本类型和包装类什么情况下判断相等(“==“或“equals“)?
    Java中判断两个变量是否相等有两种方式:一种是利用==运算符,另一种是利用equals方法。如果变量是基本类型,那么使用==和使用equals会得到相同的结果,都是判断变量的值是否......
  • 传统架构 vs 云原生架构,谈谈为什么我们需要云原生架构?
    传统架构vs云原生架构,谈谈为什么我们需要云原生架构?云原生架构是什么回顾过去十年,数字化转型驱动着技术创新和商业元素的不断融合和重构,可以说,现在已经不是由商业......
  • 软件测试工程师的自我修养是什么?
    1.对异常的敏锐“嗅觉”软件测试需要善于发现产品中存在的不足。不仅仅是从系统使用的正向看产品是否有问题,还要从用户角度出发,去设想产品的行为是否存在问题。正......
  • 为什么Redis不直接使用C语言的字符串?看完直接吊打面试官!
    众所周知Redis有以下几种常见的数据类型String(字符串)、List(列表)、Set(集合)、Hash(哈希)、Sortedset(有序集合)、Stream(流)、Geo(地理空间索引)、Bitmap(位图)、HyperLogLog(基数统计......
  • 阅读jdk源码和框架源码有什么好处?
    感受一种优秀的编程思想:通过阅读JDK源码和框架源码,可以学习到Java编程中很多优秀的设计思想,例如面向对象编程、设计模式以及良好的编码风格等。理解底层原理:深入学习JDK源......
  • 什么是webpack、npm、node、nodejs?他们之间有什么区别?
     最近在学一学前端的东西,发现前端技术栈有几个概念有些分不清,比如接触Vue后,对Vue-Cli有了解后,仅仅知道Vue-Cli是一个Vue项目的脚手架,可以快速的构建一个Vue的基于Npm的模......
  • 一个企业级的文件上传组件应该是什么样的
    前言大家好这里是阳九,一个中途转行的野路子码农,热衷于研究和手写前端工具.我的宗旨就是万物皆可手写新手创作不易,有问题欢迎指出和轻喷,谢谢本文适合有一定node后......
  • 关于JavaWeb中常见的Artifacts是什么东西?
    Artifacts其实就是包括了一些module打包的方式,Artifacts中文名为工件,如下图,当我们点击添加工件后,就会出现一些可以添加的类型,有jar、war等等,所以Artifacts自己并不是一种包......
  • 为什么软件开发周期总是预估的2~3倍?
    软件开发周期总是预估的2~3倍,这是由于很多因素造成的。根据blog.csdn.net,以下是一些可能的原因:计划永远赶不上变化。软件开发周期是根据编程能力和用户需求进行估算的,但......
  • 为什么今日未上台演示地铁程序?
    我们小组实力有限,在建民老师课上时,我们还未完成该完成的基础的功能。以下是我们组在课上实现的功能展示:原因:可见,我们的第三个功能:起点——终点查询还未完成,所以,我们......