位置: IT常识 - 正文

全面理解JSX(全面理解健康教案)

编辑:rootadmin
1 简介 JSX(JavaScript XML),即可拓展的JavaScript,是react定义的一种类似于XML的js扩展语法:JS+XML。它本质上是React.createElement(type,config,...children)的语法糖,主要用于创建React元素,生成虚拟DOM 2 ... 1 简介

推荐整理分享全面理解JSX(全面理解健康教案),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:全面理解党的根本宗旨,全面理解和把握新发展理念,全面理解健康教案,全面理解和把握党的二十主题,全面理解和把握党的二十主题,全面理解和把握党的二十主题,全面理解海外利益安全,全面理解总体国家安全观,内容如对您有帮助,希望把文章链接给更多的朋友!

JSX(JavaScript XML),即可拓展的JavaScript,是react定义的一种类似于XML的js扩展语法:JS+XML。它本质上是React.createElement(type,config,...children)的语法糖,主要用于创建React元素,生成虚拟DOM

2 使用jsx

可以使用react脚手架或者引入react与babel相关脚本来体验jsx。这里主要介绍一下后者如何使用

3 jsx语法规则

jsx包括xml格式的标签和jsx表达式{},下面从这两个角度来介绍jsx的语法规则

全面理解JSX(全面理解健康教案)

标签规则

根标签单一且闭合,否则抛出异常标签类名使用className而非class,内联样式的属性名采用小驼峰形式命名 const FC = () => ( <h1 className="font-red"> hello react <span style={{ color: 'blue' }} onClick={() => { alert('click span') }}>inner text</span> </h1> )标签属性都可以使用jsx表达式{},只有字符串可以省略大括号 <h1 className="font-red"> hello react </h1>

jsx表达式规则

{}中必须返回一个值基于1,流程控制与循环语句语句如if、for是不允许的,因为他们默认没有返回值,而逻辑运算符如&&、||、三元表达式是允许的,函数也是允许的,因为它们一定会返回一个值。因此jsx中做逻辑判断的时候优先使用后者。基于2,如果一定要使用if、for,考虑在jsx表达式中使用IIFE <input type="text" value={((type)=>{ if(type === 1){ return 'one' }else if(type === 2){ return 'two' }else{ return '' } })(type)} />对于falsy值,0会被正常渲染到页面,而false,true,null,undefined不会。如果一定要渲染它们,请先转换成字符串。 // 比如下面这段代码会在页面上显示一个不符合期望的0 const FC2 = ({arr}) => <span>{arr.length && arr.join()}</span> ReactDOM.render(<FC2 arr={[]} />, document.getElementById('app'))4 jsx优缺点4.1 优点

js语法在运行时灵活的特性基于js语法拓展,jsx具有js较为灵活的特点

xml在树状结构的表现上较为优秀因为在嵌套层数较深、交互逻辑更复杂的情况下,xml+js比起js直接创建dom或CreateElement等方式来说更人性化、更易于维护

放止XSS DOM注入型攻击jsx会将标签转义为字符串,以防止恶意标签被注入到页面

// 页面上展示文案: <a href="#">inner text<\/a> const FC = ({value}) => <div>{value}</div> ReactDOM.render(<FC value={`<a href="#">inner text<\/a>`} />, document.getElementById('app')) // 页面上出现a标签,DOM被注入 const FC = ({value}) => <div dangerouslySetInnerHTML={{__html:value}}></div> ReactDOM.render(<FC value={`<a href="#">inner text<\/a>`} />, document.getElementById('app'))4.2 缺点

导致项目依赖增多jsx必须依赖babel等编译工具转换成React.createElement才可以正常运行,导致项目依赖增多

5 深入react源码解读jsx到ReactElement

此后,jsx被编译成了React.CreateElement,后面要做的事情就是执行这个方法并创建React元素。对后续细节感兴趣可以看看这篇深入react源码解读jsx到ReactElement

本文链接地址:https://www.jiuchutong.com/zhishi/313037.html 转载请保留说明!

上一篇:织梦SEO专题的制作与优化技巧(织梦建站详细教程)

下一篇:Python学习:property装饰器(pythonproperty)

  • 支付宝小鸡盲盒怎么获得(支付宝小鸡盲盒的图片)

  • 小米手环5能听歌吗(小米手环5能听小说吗)

  • 小米mix3小爱同学声音怎么变换(小米note3小爱同学)

  • 7nm工艺什么意思(7nm制造工艺)

  • 华为手机微信御卸了在哪里找回(华为手机微信御载后,再下载,能恢复以前的微信群吗)

  • 平果11是双卡双待的吗(苹果11是双卡双带)

  • oppo最小的音量还是大(opporeno最小的音量还是大)

  • e31220相当于i几(e31220l相当于i几)

  • 中断向量表的作用(中断向量表的组成)

  • excel怎么设置背景为绿色(Excel怎么设置背景板)

  • 微信怎么开启身份证信息授权业务(微信怎么开启身份证信息授权)

  • 小米手环表带通用吗(小米手环表带容易掉小窍门)

  • oppo a5支持双频wifi吗(oppo a55 双模5g)

  • 微信钱包为什么没有显示(微信钱包为什么会被冻结)

  • 系统显示栏qq图标是什么

  • qq里的太阳月亮星星代表了什么(qq里的太阳月亮和星星是什么意思)

  • 京东可以延期收货吗(京东延期收货收费吗)

  • 手机怎么开启虚拟按键(手机怎么开启虚拟键盘功能)

  • vivo呼吸灯在哪里设置(vivo呼吸灯怎么打开)

  • obb文件怎么安装(obb文件如何安装)

  • 小红书苹果怎么下载不了(小红书苹果怎么保存图片)

  • 微机显示系统使用的显示标准(微机的显示系统)

  • xs max长度多少厘米(iphone xs max多长厘米)

  • 怎样把别人的微信推送叧一个人(怎样把别人的微信推给别人)

  • 抖音上传视频换成三格(抖音上传视频怎么换背景图片)

  • win10系统在哪里下载(Win10系统在哪里添加信任)

  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设 电脑维修 湖南楚通运网络