当前位置: 首页 > news >正文

React第三章(tsx语法入门 )

tsx语法入门

FAQ

tsx跟jsx有什么区别

答: 基本没有没有区别只是在jsx语法上增加了类型。

jsx是什么?

答:jsx是js的语法扩展,允许在js中编写html代码。

例如:const fn = () => <div>小满是谁?没听说过</div>

语法编写

  • 使用tsx绑定变量{value}

绑定class需要用className

function App() {const num: number = 333const fn = () => 'test'return (<>{'11' /** 字符串用法 */}{num /** 变量用法 */}{fn() /** 函数用法 */}{new Date().getTime() /** 日期用法 */}</>)
}
//绑定class(className) id 属性等等 都是一样的
function App() {const value:string = 'A'return (<><div data-index={value} className={value} id={value}>{value}</div></>)
}
//绑定多个class(className)
function App() {const a:string = 'A'return (<><div className={`${a} class2`}>{value}</div></>)
}
//绑定样式style
function App() {const styles = { color: 'red' }return (<><div style={styles}>test</div></>)
}
  • 使用tsx绑定事件on[Click]{fn}小驼峰 其他事件也是一样的
function App() {const value: string = '小满'const clickTap = (params: string) => console.log(params)return (<><div onClick={() => clickTap(value)}>{value}</div></>)
}
  • tsx如何使用泛型

正常写泛型语法会跟tsx语法冲突,他会把泛型理解成是一个元素,解决方案后面加一个,即可

function App() {const value: string = '小满'const clickTap = <T,>(params: T) => console.log(params)return (<><div onClick={() => clickTap(value)}>{value}</div></>)
}
  • tsx如何渲染html代码片段(dangerouslySetInnerHTML)

dangerouslySetInnerHTML 的值是一个对象,该对象包含一个名为 __html 的属性,且值为你想要插入的 HTML 字符串

function App() {const value: string = '<section style="color:red">小满</section>'return (<><div dangerouslySetInnerHTML={{ __html: value }}></div></>)
}
  • tsx如何遍历dom元素

使用map遍历返回html标签即可

function App() {const arr: string[] = ["小满","中满","大满"]return (<>{arr.map((item) => {return <div>{item}</div>})}</>)
}
  • tsx如何编写条件语句

使用三元表达式就可以了

function App() {const flag:boolean = truereturn (<>{flag ? <div>真的</div> : <div>假的</div>}</>)
}
  • tsx注意事项

{}插值语句内不允许编写switch if 变量声明 或者直接放入对象本体

下面展示错误用法正确用法对比

//错误用法
function App() {const obj = { name: '小满' }return (<>{obj}</>)
}
//正确用法
function App() {const obj = { name: '小满' }return (<>{obj.name}{JSON.stringify(obj)}</>)
}
//错误用法
function App() {const flag:boolean = truereturn (<>{if(flag){<p>1</p>}else{<p>2</p>}}</>)
}
//正确用法
function App() {const flag:boolean = truereturn (<>{flag ? <div>1</div> : <div>2</div>}</>)
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 移远通信高端5G智能模组SG560D-NA率先通过PTCRB认证
  • 配置WSL(单纯记录
  • Hive任务优化参数整理
  • 【笔记】绪论 轨道交通材料及其加工工艺
  • Version ‘18.19.0‘ not found - try `nvm ls-remote` to browse available versions.
  • torch.stack()方法在数据集构造中的应用
  • 【Rust】008-常用集合
  • 【计算机网络】电路交换、报文交换和分组交换——三种交换方式性能分析以及计算机网络的分类
  • 一文读懂:如何将广告融入大型语言模型(LLM)输出
  • Android 车联网——CarProperty使用实例(二十三)
  • gRPC etcd 服务注册与发现、自定义负载均衡
  • C++学习,函数重载
  • GO学习笔记(4) strconv/time
  • 基于鸿蒙API10的RTSP播放器(三:底部视频滑轨进度显示)
  • 【大模型理论篇】大模型周边自然语言处理技术(NLP)原理分析及数学推导(Word2Vec、TextCNN、Gated TextCNN、FastText)
  • CSS盒模型深入
  • css选择器
  • Promise初体验
  • Spring Cloud Feign的两种使用姿势
  • Unix命令
  • vue自定义指令实现v-tap插件
  • 测试如何在敏捷团队中工作?
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 大主子表关联的性能优化方法
  • 基于遗传算法的优化问题求解
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 与 ConTeXt MkIV 官方文档的接驳
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • mysql面试题分组并合并列
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • # centos7下FFmpeg环境部署记录
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #define 用法
  • #if #elif #endif
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • ()、[]、{}、(())、[[]]命令替换
  • (2015)JS ES6 必知的十个 特性
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (没学懂,待填坑)【动态规划】数位动态规划
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .Net 8.0 新的变化
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [Android]将私钥(.pk8)和公钥证书(.pem/.crt)合并成一个PKCS#12格式的密钥库文件
  • [BZOJ] 2044: 三维导弹拦截
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试
  • [C++] 轻熟类和对象
  • [C++]二叉搜索树
  • [CISCN2021 Quals]upload(PNG-IDAT块嵌入马)
  • [C语言]编译和链接
  • [flink]部署模式
  • [Hive]五、Hive 源码编译
  • [iOS]把16进制(#871f78)颜色转换UIColor