React中JSX的使用

Posted david_远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React中JSX的使用相关的知识,希望对你有一定的参考价值。

JSX的基本使用

createElement()的问题

在这里插入图片描述

  • 编写繁琐不简洁
  • 非常的不直观,无法直接看出结构
  • 不优雅,用户体验不好
  • JSX写法
    在这里插入图片描述

JSX简介

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

优势:

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

JSX是react的核心

使用

  • 使用JSX语法创建react元素
const title = <h1 >HELLO</h1>
  • 使用ReactDOM.render()方法渲染react到页面中
ReactDOM.render(
  title,
  document.getElementById('root')
);

在这里插入图片描述
在这里插入图片描述

注意点

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

class属性:
在这里插入图片描述

  • 没有子节点的React元素可以使用<span/>结束
    在这里插入图片描述
  • 使用小括号包裹JSX,从而避免JS中的自动插入分号陷阱(推荐)
    在这里插入图片描述

JSX中使用JavaScript表达式

嵌入JS表达式

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

const title = (
  <h1 className="title">
    HELLO {name}
  </h1>
)

在这里插入图片描述

注意

  • 单花括号中可以使用任意的JavaScript表达式
const title = (
  <h1 className="title">
    <p>{1}</p>
    <p>{1 + 1}</p>
    <p>{'HELLO'}</p>
    <p>{10 < 5 ? '是的' : '不是'}</p>
  </h1>
)

在这里插入图片描述

  • JSX自身也是JS表达式
const p = (
  <p>
    HELLO
  </p>
)
const title = (
  <h1 className="title">
    {p}
  </h1>
)

在这里插入图片描述

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

JSX条件渲染

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

在这里插入图片描述
在这里插入图片描述
-可以使用id/else或三元运算符或逻辑与运算符实现

三元:

const isShow = true
const show = () => {
  return isShow ? (<div>我是true</div>) : (<div>我是false</div>)
}
const title = (
  <h1 className="title">
    {show()}
  </h1>
)

在这里插入图片描述
逻辑与:

const isShow = true
const show = () => {
  return isShow && (<div>显示</div>)
}
const title = (
  <h1 className="title">
    {show()}
  </h1>
)

在这里插入图片描述
在这里插入图片描述

JSX的列表渲染

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

在这里插入图片描述
但是会有报错
在这里插入图片描述
意思就是没有key值 我们设置一下即可

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

在这里插入图片描述
此时就不报错了

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

JSX样式处理

  • 行内样式 ----style
const title = <h1 style={{ color: 'red', backgroundColor: '#000' }}>HELLO</h1>

在这里插入图片描述

  • 类名 — className(强烈推荐)

在这里插入图片描述

以上是关于React中JSX的使用的主要内容,如果未能解决你的问题,请参考以下文章

React:使用 Webpack 在 JSX 中内联 CSS 模块

在 React 和 JSX 中使用 <pre> 标记格式化代码

React2.JSX的使用

前端经典react面试题(持续更新中)

前端经典react面试题(持续更新中)

前端经典react面试题(持续更新中)