JSX

    • *问题引入
  • 一、jsx
    • 1.1 基本使用步骤
    • 1.2 嵌入JavaScript 表达式
  • 二、条件渲染
  • 三、列表渲染
  • 四、样式处理
    • 4.1.行内样式 —— style
    • 4.2.类名 —— className(推荐)

*问题引入

react中自带创建节点的方法createElement()

React.createElement(type,[props],[...children]
)
参数一:必填,类似HTML标签名称,如: ul, li
参数二:选填,属性,如className
参数三:选填, 子节点

创建节点代码如下:

看图可知这个方式创建缺点多:代码繁琐不简洁,结构不清晰,用户体验差


于是我们引入JSX,代码如图:

一、jsx

JSX,全称JavaScript XML。
顾名思义,它表示在 JavaScript 代码中写 XML(HTML) 格式的代码。
JSX 是 React 的核心内容。

优点:简洁、结构清晰

1.1 基本使用步骤

1.创建 react 元素:
const title = <h1>Hello JSX</h1>

推荐写法:(避免 JS 中的自动插入分号陷阱)

const title = (<h1>Hello JSX</h1>`
)

2.使用 ReactDOM.render() 方法渲染 react 元素到页面中
ReactDOM.render(title, root)

tip:
a. React元素的属性名使用驼峰命名法
b. 特殊属性名:class -> className、tabindex -> tabIndex 。
c. 没有子节点的React元素可以用 /> 结束 。

1.2 嵌入JavaScript 表达式

语法:{ JavaScript表达式 }

示例:

const name = 'erya'
const box = (<div>I’m :{name}, 出生的年份:{1992+8}</div><p>{3>5?'大于':'小于等于'}
)

注意点:

  • 可以调用函数表达式

  • JSX 自身也是 JS 表达式

  • 不能在{}中出现语句(比如:if/for 等)

二、条件渲染

条件渲染:根据条件渲染特定的 JSX 结构
可使用 if/else 或 三元运算符 ?: 或 逻辑与运算符 && 来实现

场景:loading效果,根据isLoading的true/false值来判定现在是否渲染loading效果

  • 方法一:if/else
const isLoading = falseconst loadData = () => {if (isLoading) {return <div>loading...</div>}return <div>加载完成,展示数据</div>
}
const title = (<h1>条件渲染: {loadData()}</h1>
)
  • 方法二:?:
const loadData = () => {return isLoading ? (<div>loading...</div>) :(<div>加载完成展示数据</div>)
}
  • 方法三:&&

短路逻辑,和上面两种情况稍有不同,每个&&语句只能控制一种情况的显示(isLoading为true时才会显示&&后面的元素)

const loadData = () => {return isLoading && (<div>loading...</div>)
}

三、列表渲染

方法:数组的 map() 方法,需要一个唯一的key属性(尽量避免使用索引号作为key)!

原则: map遍历谁,就给谁添加key属性

const foods = [{id: 1, name: 'apple'},{id: 2, name: 'chocolate'},{id: 3, name: 'cake'},
]
const list = (<ul>{songs.map(item => <li key={item.id}>{item.name}</li>)}</ul>
)

四、样式处理

4.1.行内样式 —— style

style{}里的一定是个对象

const list = (<h1 style={{ color: 'red', backgroundColor: 'blue' }}>hi</h1>
)

4.2.类名 —— className(推荐)

//index.js
const list = (<h1 className = "title" >hi</h1>
)
/*index.css*/
.text {text-align: center;
}

React-JSX详细语法及渲染使用相关推荐

  1. react 数字转字符_深入浅出 React -- JSX

    什么是 JSX JSX 是一个 JavaScript 的语法扩展.JSX 可能会使人联想到模版语言,但它具有 JavaScript 的全部功能 在 React 中,JSX 仅仅是 React.crea ...

  2. Airbnb React/JSX 编码规范

    Airbnb React/JSX 编码规范 算是最合理的React/JSX编码规范之一了 内容目录 基本规范 Class vs React.createClass vs stateless 命名 声明 ...

  3. 项目解析jsx文件_React 基础:JSX 扩展语法

    前言 作为一个前端开发有些不好意思,居然还没有接触过 React ,就借这段时间积累下 React 相关经验,为疫情过后能有更多的就业机会. 如果你已经是个经验丰富的 React Developer ...

  4. React 超详细入门教程

    文章目录 一,React简介 1.什么是React 2.React工作原理 3.React历史 4.React的特点 5. React 高效的原因 6.React 官方网站 二,React基本使用 1 ...

  5. Airbnb-你非常值得学习的 React/JSX 编码风格指南

    大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 作者:jiahao-c译 https://github.com/jiahao-c/javas ...

  6. 前端战五渣学React——JSX React.createElement() React.ReactElement()源码

    最近<一拳超人>动画更新第二季了,感觉打斗场面没有第一季那么烧钱了,但是剧情还挺好看的,就找了漫画来看.琦玉老师真的厉害!!!打谁都一拳,就喜欢看老师一拳把那些上来就吹牛逼的反派打的稀烂, ...

  7. 前端React框架基础语法

    一.ReactDOM.render()方法 ReactDOM.render()方法是React框架中最最最基础的方法,这个方法的作用是将模板转化为HTML的语法,然后插入到指定的 DOM 节点中. & ...

  8. 4、JSX 基本语法规则

    JSX 基本语法规则 上一篇博文稍微说了一下 虚拟DOM 和 真实DOM 的区别,这一篇我们稍微说一下 jsx 的一些语法规则,这个是在开发中经常遇到的,今天稍微过一下. 什么是 JSX JSX 全称 ...

  9. Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

    目录 一.VueJS是什么? 二.Vue的优缺点 三.MVVM 数据双向绑定 四.Vue的安装和使用 五.Vue模板语法-文本渲染 六.常用的vue的指令 一.VueJS是什么? 它是一个轻量级MVV ...

最新文章

  1. OKR让伟大的企业愿景成为可能
  2. db2 修改表空间自增长_db2表空间及日志文件调整
  3. mysql语句orderby_mysql中的orderby_MySQL
  4. drawrect java_对于drawRect使用,谨慎使用!
  5. 优化算法求解复杂约束问题策略(以粒子群算法为例讲解求解复杂约束问题的多种策略)
  6. 第七章 PX4-Mavlink解析
  7. 21天学通c语言第四版pdf,21天学通Visual C++ PDF扫描版[116MB]
  8. javafx窗体程序_JavaFX真实世界应用程序:欧洲电视网广播联盟
  9. pycharm无法导入Pillow
  10. 2021年中国助听器市场趋势报告、技术动态创新及2027年市场预测
  11. Linux下编译安装WizNote
  12. 360安全卫士隐藏广告日常去除小技巧
  13. WEB前端工具推荐丨分享6个热门颜色选择器组件
  14. 【IJCAI 2022】参数高效的大模型稀疏训练方法,大幅减少稀疏训练所需资源
  15. 【python教程入门学习】Python字典及基本操作(超级详细)
  16. 解决only integer scalar arrays can be converted to a scalar index
  17. 数学建模与数据分析中的主成分分析
  18. 如何理解移动数据和移动计算
  19. chrome的APP模式与全屏模式 --app --kiosk
  20. vue启动报错98% after emitting CopyPlugin This dependency was not found:

热门文章

  1. 【李宏毅2020 ML/DL】P1 introduction
  2. 关于MATLAB2014b不能并行计算的原因及解决方法
  3. Linux驱动(12)--LED驱动
  4. 机器学习实战3-sklearn使用下载MNIST数据集进行分类项目
  5. 4021-基于链地址法的散列表的删除(C++,附思路)
  6. 服务器上tomcat运行php文件路径,如何在同一服务器环境上运行PHP和Tomcat?
  7. mysql集群如何保障数据分布均匀_如何保证数据库集群时候,主从库一致性的问题?...
  8. Codeforces - 706B - Interesting drink - 二分 - 简单dp
  9. java开发过程中几种常用算法
  10. 关于Image创建的内存管理