JSX/TSX的知识介绍

2023-11-18

JSX/TSX 基本介绍

JSX和TSX是一种基于JavaScript的语法扩展,用于在React和Vue.js等框架中编写可复用的UI组件和控制逻辑。JSX/TSX可以帮助开发者更加直观和高效地编写UI组件和交互逻辑,同时也可以提高代码的可读性和可维护性。

其中,JSX是React的一种扩展语法,用于构建UI组件和控制逻辑。TSX是TypeScript与JSX结合使用后,用于构建可复用UI组件和控制逻辑的一种语法扩展。TSX在VSCode等IDE中有很好的支持,可以带来更好的代码补全和类型检查。

在实际开发中,使用JSX/TSX可以帮助我们更快速地编写UI组件和逻辑控制代码,同时可以使代码更加易于理解和调试。

举例理解

以下是一些使用JSX/TSX构建UI组件和逻辑控制的例子:

  1. React开发中的JSX:使用类似于HTML的语法,构建UI组件和渲染逻辑。
function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

const element = <Welcome name="Sara" />;
ReactDOM.render(
  element,
  document.getElementById('root')
);
  1. Vue.js中使用JSX:使用类似于HTML的语法,在Vue组件中构建UI界面并实现逻辑控制。
import Vue from 'vue';

export default Vue.extend({
  render() {
    return (
        <div>
            <h1>Hello, {this.$props.name}!</h1>
            <p>This is a JSX component in Vue.js.</p>
        </div>
    )
  },
  props: {
    name: String,
  }
});
  1. 在Vue.js中使用TSX:使用类似于HTML的语法,并结合TypeScript构建可复用的UI组件和逻辑控制。
import { Component, Prop, Vue } from 'vue-property-decorator';

@Component
export default class HelloWorld extends Vue {
  @Prop() private msg!: string;

  render() {
    return (
      <div>
        <p>{this.msg}</p>
      </div>
    );
  }
}

JS 和 JSX 、TS 和 TSX 的区别

JS 和 JSX

在文件后缀中
.js 表示这是一个 JavaScript 文件
.jsx 表示这是一个 JavaScript XML 文件
JavaScript 是一种直译式脚本语言,大家应该都很熟悉
JavaScript XML 是React组件内部构建标签的类XML语法。可以理解为React提供的语法糖,可以让编译器更方便快速的选择编译方式。
JavaScript 是能够被浏览器直接识别的,JavaScript XML需要经过编译器(webpack等)转换成 JavaScript
但在正常使用上,两者没有什么区别, .js 的语法和 .jsx 的后缀可以互换,语法上也完全兼容
Facebook的团队建议(也就是React的创造者),统一使用 .js 即可,无需特意区分。

TS 和 TSX

.ts 表示这是一个 TypeScript 文件
.tsx 表示这是一个 TypeScript 文件,但它同时还包含了 JavaScript XML(JSX)
我们从使用的角度上来说
.ts 的文件,内容上不支持 <div> 这种HTML语法,会报错的,而且VS Code这类代码编辑器也不会提供相关代码提示和补全的功能。
反之 .tsx 的文件,在遵循TypeScript的基础上,支持 JSX 语法。
所以我们在使用时
辅助的函数文件使用 .ts 即可
React组件方面,还是必须使用.tsx


借鉴学习:
链接:JS 和 JSX 、TS 和 TSX 的区别

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSX/TSX的知识介绍 的相关文章

  • 在 Internet Explorer 中使用什么来监视 jscript 内存使用情况

    我们正在调试 GWT 应用程序 在 Firefox 中运行正常 在 IE6 0 中开始运行正常 但一段时间后 它就会崩溃并开始爬行 经过一些测试后 我们怀疑存在一些内存问题 使用了太多内存 内存泄漏等 除了使用taskmanager和pro
  • 在版本 4.4.6 中禁用 ckeditor 上下文菜单

    我在 Rails4 项目中使用 ckeditor 我尝试了 ckeditor gem 和 ckeditor rails gem 来提供 ckeditor 库 这里有多个帖子 人们希望删除 ckeditor 上下文菜单 以便可以显示本机浏览器
  • 如何使用有角度的材料创建卡片网格?

    我正在尝试使用 ng repeat 创建每行三张卡片的网格 我有一个普通的 javascript 对象数组附加到范围 下面的代码将为每张卡创建一个新行 div div
  • 如何使用javascript确保元素仅在圆上朝一个方向移动?

    好吧 我承认我对三角学真的很糟糕 出于上下文的考虑 我将添加我在这里提到的问题中的内容 参考问题 https stackoverflow com a 39429290 168492 https stackoverflow com a 394
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • IntersectionObserver是否支持水平滚动观察?

    我制作了几个垂直滚动 IntersectionObserver 模块 但我对水平滚动感兴趣 根将是 div 观察目标将是 img 我想观察当 img 放大但 div 保持视口宽度时的变化 我什至不确定移动 Safari 是否会将缩放后的图片
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • 如何通过单击链接来更改 div 的内容?

    这是我的网页的 修改后的 jsfiddle 它还有很多 而且定位是正确的 与此相反 http jsfiddle net ry0tec3p 1 http jsfiddle net ry0tec3p 1 a href class btn1 st
  • 计算三次贝塞尔曲线的弧长、曲线长度。为什么不工作?

    我正在用这个算法计算弧长 三次贝塞尔曲线的长度 function getArcLength path var STEPS 1000 gt precision var t 1 STEPS var aX 0 var aY 0 var bX 0
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • 用于选择特定 div 中具有特定类的锚元素的 jQuery 选择器是什么

    我有一些这样的代码 我想选择每个 a 带有类的标签status在 div 中foo div a class status a div 你可以这样做 foo find status a
  • Google Maps API (v3) 添加/更新标记

    编辑 它现在可以工作 但如果用户不允许或没有基于位置的服务 则不会加载 请参阅 jsfiddle 示例接受的答案评论 我已经浏览了一些教程和问题 但我无法安静地理解正在发生的事情 或者在这种情况下 没有发生 当用户单击链接时 我正在加载地图
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • 使用 Enzyme 测试 `React.createRef` api

    我想测试下面的类 它使用React createRef api 不过 快速搜索并没有发现任何这样做的例子 有人成功过吗 我该如何嘲笑裁判 理想情况下我想使用shallow class Main extends React Component
  • 有没有办法使用 ko.observableArray 作为地图?

    有没有办法使用ko observableArray http knockoutjs com documentation observableArrays html像地图 字典一样 例如 var arr ko observableArray

随机推荐

  • 我刚刚作出了一个非常艰难的决定,还是把这个贴子发出来

    中国电力总公司 我们刚刚作出了一个非常艰难的决定 在腾讯和360停止互相争斗之前 我们决定将在装有QQ软件和360软件的电脑上停止供电 中国电力有幸能陪伴着您成长 未来日子 我们期待与您继续同行 微软中国 我们刚刚作出了一个非常艰难的决定
  • 714. 买卖股票的最佳时机含手续费

    给定一个整数数组 prices 其中第 i 个元素代表了第 i 天的股票价格 非负整数 fee 代表了交易股票的手续费用 你可以无限次地完成交易 但是你每笔交易都需要付手续费 如果你已经购买了一个股票 在卖出它之前你就不能再继续购买股票了
  • 2019年区块链教育培训课程研究报告

    前言 区块链教育培训机构可谓是区块链行业中的真正的 布道者 其课程内容主要有 技术培训 投资培训以及行业培训这三大类 课程内容主要的提供方可以分为 项目方 高校 常规教育机构以及新兴教育机构这四类 目前 较多的机构正在进行投资培训以及行业培
  • 黑圈数字符号0到50复制_带圆圈数字符号大全

    http www petroleumcloud cn pages 623 html 带圆圈数字符号一共有五种 其中包括一种中文数字符号 空心圆圈数字符号和实心黑圆圈数字分别有两种 只有一种圆圈数字符号能从0 50 其它的只有10个 复制 复
  • 华为OD机试题

    华为OD机试回顾 华为OD 机试题 Java实现 小镇做题家 做题记录 微信 yatesKumi 祖国西北部有一片大片荒地 其中零星的分布着一些湖泊 保护区 矿区 整体上常年光照良好 但是也有一些地区光照不太好 某电力公司希望在这里建设多个
  • LeetCode数据库题目汇总一(附答案)

    1 基础SQL 数据表 dept deptno primary key dname loc emp empno primary key ename job mgr references emp empno sal deptno refere
  • python numpy array 中删除含0量高于阈值的行--数据清洗

    问题 数据中包含较多0值 类似于包含较大噪声 对结果产生较大影响 目标 对数据进行清洗 在进行其他数据清洗操作的基础上 实现删除数据中包含较多0值的行 可类比推广到删除其他 代码实现 data data np sum data 0 axis
  • python中if __name__ == '__main__': 解析

    当你打开一个 py文件时 经常会在代码的最下面看到if name main 现在就来介 绍一下它的作用 模块是对象 并且所有的模块都有一个内置属性 name 一个模块的 name 的值取决于您如何应用模块 如果 import 一个模块 那么
  • java保留小数点的方式

    double型的 1 能四舍五入 System out printf 9 2f d 1 double d 114 145 2 d double Math round d 100 100 3 System out println d 2 Bi
  • PS2汉化2 - 自制程序的运行与调试

    自制程序的运行与调试 运行调试的坑点之类的 SDK 运行与调试 通过PS3 通过PS2 神 昂 奇 贵 的DTL 10000 贫穷者的零售机器 通过PCSX2仿真器 运行调试的坑点之类的 本文为了自制程序 或者修改后的某些程序 而撰写 记录
  • 第九章 tcp拥塞控制--基于Linux3.10

    下载地址 http download csdn net detail shichaog 8620701 Linux提供丰富的拥塞控制算法 这些算法包括Vegas Reno HSCTP High Speed TCP Westwood BIC
  • 【java筑基】IO流进阶之文件随机访问、序列化与反序列化

    前 言 作者简介 半旧518 长跑型选手 立志坚持写10年博客 专注于java后端 专栏简介 深入 全面 系统的介绍java的基础知识 文章简介 本文将深入全面介绍IO流知识 建议收藏备用 创作不易 敬请三连哦 大厂真题 大厂面试真题大全
  • unity中通过touch旋转、放大和缩小物体以及滑动方向的判断

    unity中通过touch旋转 放大和缩小物体以及滑动方向的判断这个需求在游戏开发中也是非常频繁 话不多说直接上代码 using System Collections using System Collections Generic usi
  • XSS详解

    XSS 伪装管理员登录后台 文章目录 XSS 伪装管理员登录后台 一 XSS注入原理 二 XSS危害 二 XSS分类 三 Cookie是什么 四 XSS获取cookie 一 XSS注入原理 XSS 攻击全称跨站脚本攻击 是为不和层叠样式表
  • [转]Unity Accelerator本地服务器加速Unity项目资源载入速度

    去年的时候项目引擎版本由2019升级为2020 对应的资源导入管线也由V1切换到了V2 在这个过程中发现原来的cachesever就不满足项目需要了 查阅了一些资料发现unity的cachesever升级成了Unity Accelerato
  • 警惕使用jvm参数CMSRefProcTaskProxy

    昨天中午的时候 团队的兄弟找我看一个现象 原先因为堆外内存使用过多会crash掉的java应用 设置了最大堆外内存量 MaxDirectMemorySize 后jvm不会crash 但出现了机器的两颗CPU全部被占满 而且java程序没有响
  • 【rust/egui】(九)使用painter绘制一些图形—基本使用

    说在前面 rust新手 egui没啥找到啥教程 这里自己记录下学习过程 环境 windows11 22H2 rust版本 rustc 1 71 1 egui版本 0 22 0 eframe版本 0 22 0 上一篇 这里 painter 定
  • Python数据分析小技巧:如何在Pandas中实现数据透视表?

    Python数据分析小技巧 如何在Pandas中实现数据透视表 数据透视表是数据分析中非常有用的工具 可以帮助我们快速了解数据的结构 关联和趋势 在Pandas中 我们可以使用pivot table 函数来实现数据透视表 例如 我们有一个销
  • 必须掌握的hashcode()方法

    一 hashcode是什么 1 hash和hash表是什么 想要知道这个hashcode 首先得知道hash 通过百度百科看一下 hash是一个函数 该函数中的实现就是一种算法 就是通过一系列的算法来得到一个hash值 这个时候 我们就需要
  • JSX/TSX的知识介绍

    JSX TSX 基本介绍 JSX和TSX是一种基于JavaScript的语法扩展 用于在React和Vue js等框架中编写可复用的UI组件和控制逻辑 JSX TSX可以帮助开发者更加直观和高效地编写UI组件和交互逻辑 同时也可以提高代码的