只需5分钟教会你使用React中的JSX

JSX的基本使用

createElement()的问题

只需5分钟教会你使用React中的JSX_第1张图片

  • 编写繁琐不简洁
  • 非常的不直观,无法直接看出结构
  • 不优雅,用户体验不好
  • JSX写法
    只需5分钟教会你使用React中的JSX_第2张图片

JSX简介

JSX是Javascript的一种语法拓展
JSX是JavaScript XML简写,表示在JavaScript中编写XML格式代码(也就是HTML格式)

优势:

  • 声明式语法更加直观
  • 与HTML结构相同
  • 降低了学习成本、提升开发效率

JSX是react的核心

使用

  • 使用JSX语法创建react元素
const title = 

HELLO

  • 使用ReactDOM.render()方法渲染react到页面中
ReactDOM.render(
  title,
  document.getElementById('root')
);

只需5分钟教会你使用React中的JSX_第3张图片
只需5分钟教会你使用React中的JSX_第4张图片

注意点

  • React元素的属性名使用驼峰命名法
  • 特殊属性名:class -> className、for -> htmlFor、tabindex-> tablndex

class属性:
只需5分钟教会你使用React中的JSX_第5张图片

  • 没有子节点的React元素可以使用结束
    只需5分钟教会你使用React中的JSX_第6张图片
  • 使用小括号包裹JSX,从而避免JS中的自动插入分号陷阱(推荐)
    只需5分钟教会你使用React中的JSX_第7张图片

JSX中使用JavaScript表达式

嵌入JS表达式

  • 数据储存在JS中
  • 语法:{JavaScript表达式}
  • 注意:语法中是单花括号,不是双花括号
const name = '张三'

const title = (
  

HELLO {name}

)

只需5分钟教会你使用React中的JSX_第8张图片

注意

  • 单花括号中可以使用任意的JavaScript表达式
const title = (
  

{1}

{1 + 1}

{'HELLO'}

{10 < 5 ? '是的' : '不是'}

)

只需5分钟教会你使用React中的JSX_第9张图片

  • JSX自身也是JS表达式
const p = (
  

HELLO

) const title = (

{p}

)

只需5分钟教会你使用React中的JSX_第10张图片

  • JS中的对象是一个例外,一般只会出现在style属性中
  • 不能在{}中出现语句(例如:if/for等等)

JSX条件渲染

  • 场景:文字的显示不同
  • 根据条件渲染特定的JSX结构
const isShow = false
const show = () => {
  if (isShow) {
    return 
我是true
} return (
我是false
) } const title = (

{show()}

)

只需5分钟教会你使用React中的JSX_第11张图片
只需5分钟教会你使用React中的JSX_第12张图片
-可以使用id/else或三元运算符或逻辑与运算符实现

三元:

const isShow = true
const show = () => {
  return isShow ? (
我是true
) : (
我是false
) } const title = (

{show()}

)

只需5分钟教会你使用React中的JSX_第13张图片
逻辑与:

const isShow = true
const show = () => {
  return isShow && (
显示
) } const title = (

{show()}

)

只需5分钟教会你使用React中的JSX_第14张图片
只需5分钟教会你使用React中的JSX_第15张图片

JSX的列表渲染

  • 渲染一组数据,使用数组的map()方法
const names = [
  { id: 1, name: '张三' },
  { id: 2, name: '李四' },
  { id: 3, name: '王五' },
  { id: 4, name: '赵四' },
  { id: 5, name: '刘能' }
]
const title = (
  
    {names.map(item =>
  • {item.name}
  • )}
)

只需5分钟教会你使用React中的JSX_第16张图片
但是会有报错
只需5分钟教会你使用React中的JSX_第17张图片
意思就是没有key值 我们设置一下即可

const names = [
  { id: 1, name: '张三' },
  { id: 2, name: '李四' },
  { id: 3, name: '王五' },
  { id: 4, name: '赵四' },
  { id: 5, name: '刘能' }
]
const title = (
  
    {names.map(item =>
  • {item.name}
  • )}
)

只需5分钟教会你使用React中的JSX_第18张图片
此时就不报错了

  • 渲染列表时应该添加key属性,属性值要保证唯一
  • map()遍历谁,就给谁+key属性
  • 尽量避免使用索引号作为key值

JSX样式处理

  • 行内样式 ----style
const title = 

HELLO

只需5分钟教会你使用React中的JSX_第19张图片

  • 类名 — className(强烈推荐)

只需5分钟教会你使用React中的JSX_第20张图片

你可能感兴趣的:(react,react)