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. 10000字超全Redis面试题,再也不怕被问住了!
  2. php下载文件压缩包已经损坏或未知格式,这个压缩文件格式未知或者数据已经被损坏解决方法...
  3. HadoopHelper使用说明
  4. android json 解析图片,JSON解析并获取android中的图像
  5. vs2005 新建项目一片空白
  6. Orleans 3.0 发布,微软下一代云计算编程模式
  7. 烂泥:更换ESXI5.0管理网卡及管理IP地址
  8. 踩了无数个坑,才写出稿费1000的文章
  9. 【评分】个人作业——软件工程实践总结作业
  10. Scikit-learn:主要模块和基本使用方法
  11. CMOS密码清除方法
  12. SSM面试题及相关答案
  13. 海康威视+虹软人脸识别
  14. Java实训——学生信息管理系统
  15. Matplotlib风羽自定义
  16. 《神雕侠侣》——一见杨过误终生,格格一笑很倾城
  17. 论文解读:多层肽 - 蛋白质相互作用预测的深度学习框架
  18. 沪深A股分析数据机构持股信息API接口(JSON标准格式,Get请求方式)
  19. 跟尤雨溪一起解读Vue3源码笔记- Vue Mastery
  20. MDC300平台介绍

热门文章

  1. extjs 中动态给gridpanel 复选框赋值
  2. 005木桶缩放(比例非原始)
  3. 【原创,提供下载】winfrom 打印表格,字符串的封装
  4. asp.net 去除字符串右侧的最后一个字符
  5. JavaScript let、const与var的区别
  6. Vuejs 计算属性
  7. Win32程序设计(Windows程序设计机理)
  8. 7-1 ATM机类结构设计(一) (100 分)
  9. 4006基于邻接矩阵的顶点的删除(C++,附思路)
  10. 登录页面(通过数据库查询密码是否正确)