React基础 第四章(JSX标签)

JSX是React开发中不可或缺的一部分,它将JavaScript与类HTML的标记语言结合在一起,使得编写UI组件变得直观而高效。本文将基于React官方文档中的知识点,提供一些在开发中常用的技巧、示例代码以及注意事项。

为什么使用JSX

JSX允许你将渲染逻辑与UI标签紧密耦合在一起,这样可以保证在修改组件时,相关的逻辑和UI能够同步更新。

技巧

  • 将渲染逻辑和UI代码放在同一个组件中,以提高代码的可读性和可维护性。

示例

jsx 复制代码
function Button({ label }) {
  return <button>{label}</button>;
}

注意事项

  • 确保组件的逻辑和UI紧密相关,避免将无关的逻辑混入组件中。

JSX与HTML的区别

虽然JSX看起来与HTML非常相似,但它们在一些细节上有所不同。

技巧

  • 使用className代替class属性,因为class是JavaScript中的保留字。
  • 自闭合标签必须以斜杠结束,例如<img />

示例

jsx 复制代码
const Image = () => (
  <img src="https://i.imgur.com/yXOvdOSs.jpg" alt="Hedy Lamarr" className="photo" />
);

注意事项

  • 记住JSX中的所有元素都必须闭合,包括自闭合的标签。

正确代码

jsx 复制代码
// 自闭合标签正确闭合
<img src="https://i.imgur.com/yXOvdOSs.jpg" alt="Hedy Lamarr" className="photo" />

错误代码

jsx 复制代码
// 错误:未正确闭合的自闭合标签
<img src="https://i.imgur.com/yXOvdOSs.jpg" alt="Hedy Lamarr" className="photo">

展示信息

JSX中可以很容易地展示动态信息。

技巧

  • 使用大括号{}来插入JavaScript表达式,包括变量、函数调用等。

示例

jsx 复制代码
function Greeting({ name }) {
  return <h1>欢迎,{name}!</h1>;
}

注意事项

  • 确保插入的JavaScript表达式返回的是React可以渲染的值,例如字符串、数字、元素或组件。

使用Fragment

当需要返回多个元素而不想添加额外的DOM节点时,可以使用React Fragment。

技巧

  • 使用<>...</>作为不添加额外DOM节点的容器。

示例

jsx 复制代码
function TodoList() {
  return (
    <>
      <h1>待办事项</h1>
      <ul>
        <li>学习JSX</li>
        <li>编写组件</li>
      </ul>
    </>
  );
}

注意事项

  • Fragment只是作为包裹元素,并不会渲染任何实际的DOM节点。

通过以上技巧和注意事项,你可以更加自如地使用JSX来构建你的React应用。记住,JSX不仅仅是一个简单的模板语言,它是一个强大的工具,可以让你以声明式的方式来描述你的UI,并且能够完美地与React的组件模型结合。

相关推荐
xiaoqi92216 分钟前
React Native鸿蒙跨平台如何实现分类页面组件通过searchQuery状态变量管理搜索输入,实现了分类的实时过滤功能
javascript·react native·react.js·ecmascript·harmonyos
打小就很皮...29 分钟前
Tesseract.js OCR 中文识别
前端·react.js·ocr
qq_1777673739 分钟前
React Native鸿蒙跨平台实现应用介绍页,实现了应用信息卡片展示、特色功能网格布局、权限/联系信息陈列、评分展示、模态框详情交互等通用场景
javascript·react native·react.js·ecmascript·交互·harmonyos
wuhen_n1 小时前
JavaScript内存管理与执行上下文
前端·javascript
Hi_kenyon1 小时前
理解vue中的ref
前端·javascript·vue.js
jin1233222 小时前
基于React Native鸿蒙跨平台地址管理是许多电商、外卖、物流等应用的重要功能模块,实现了地址的添加、编辑、删除和设置默认等功能
javascript·react native·react.js·ecmascript·harmonyos
2501_920931702 小时前
React Native鸿蒙跨平台医疗健康类的血压记录,包括收缩压、舒张压、心率、日期、时间、备注和状态
javascript·react native·react.js·ecmascript·harmonyos
落霞的思绪3 小时前
配置React和React-dom为CDN引入
前端·react.js·前端框架
Hacker_Z&Q3 小时前
CSS 笔记2 (属性)
前端·css·笔记
Anastasiozzzz3 小时前
LeetCode Hot100 295. 数据流的中位数 MedianFinder
java·服务器·前端