React 列表渲染基础示例

React 中最常见的一个需求就是「把一组数据渲染成一组 DOM 元素」,比如一个列表。下面是我写的一个最小示例,目的是搞清楚它到底是怎么工作的。

示例代码

// 定义一个静态数组,模拟后续要渲染的数据源
// 每个对象代表一个前端框架,注意一定要有唯一的 id
const list = [{ id: 1001, name: 'Vue' },{ id: 1002, name: 'React' },{ id: 1003, name: 'Angular' }
]// 定义一个函数式组件 App,React 推荐使用函数组件
function App() {return (<div className="App">{/* 这是组件的基本结构,先写个提示文本 */}this is App{/* 下面这个列表是重点,动态渲染 list 数据 */}<ul>{// 用 map 把每个数据项转成一个 <li> 元素// 注意:一定要加 key,React 需要这个 key 来区分每一项list.map(item => (<li key={item.id}>{item.name}</li>))}</ul></div>)
}// 别忘了把组件导出去,不然在其他文件里用不了
export default App

理解重点(写给自己看的)

1. 为什么要加 key

React 在渲染列表时,靠 key 来识别每一项。如果没有 key,它在对比新旧节点时会不清楚哪个该更新、哪个该删除,会导致性能低下或者奇怪的渲染 bug。最保险的做法就是用数据库里自带的 id

2. 为什么用 map

因为 map 可以把原始数组“转换”为另一种形式。在这里,我们把对象转成 <li> 元素,它刚好就是我们想要的结构。

3. JSX 中变量必须写在 {}

比如 {item.name},这是 JSX 的基本语法。哪怕只是变量,也必须包在大括号中,不然它会被当作字符串来处理。

4. className 而不是 class

这是 React 的一处设计细节:因为 class 是 JavaScript 的保留字,所以 React 用 className 来代替 HTML 的 class


这一小段代码虽然简单,但本质上已经覆盖了 React 列表渲染的基础。每次写 map 渲染列表时,我都会回头看一下这段例子,确保自己没有遗漏关键点。

下次我想试试给每一项加点击事件,比如高亮或者删除,思路其实也很清晰:加一个 onClick 就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NHANES指标推荐:CMI

文章题目&#xff1a;Association between cardiometabolic index and biological ageing among adults: a population-based study DOI&#xff1a;10.1186/s12889-025-22053-3 中文标题&#xff1a;成年人心脏代谢指数与生物衰老之间的关系&#xff1a;一项基于人群的研究 发…

QT调用ffmpeg库实现视频录制

可以通过QProcess调用ffmpeg命令行,也可以直接调用ffmpeg库,方便。 调用库 安装ffmpeg ffmpeg -version 没装就装 sudo apt-get update sudo apt-get install ffmpeg sudo apt-get install ffmpeg libavdevice-dev .pro引入库路径,引入库 LIBS += -L/usr/lib/aarch64-l…

消息中间件——RocketMQ(二)

前言&#xff1a;此篇文章系本人学习过程中记录下来的笔记&#xff0c;里面难免会有不少欠缺的地方&#xff0c;诚心期待大家多多给予指教。 RocketMQ&#xff08;一&#xff09; 接上期内容&#xff1a;上期完成了RocketMQ单机部署知识。下面学习RocketMQ集群相关知识&#xf…

pyqt环境配置

文章目录 1 概述2 PyQt6和PySide6区别3 环境配置4 配置PySide65 配置PyQt66 配置外部工具7 添加模板8 使用pyside6-project构建工程9 常见错误10 相关地址 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;Qt开发 &#x1f448;&#x1f449;python开发 &#x1…

金融数据库转型实战读后感

荣幸收到老友太保科技有限公司数智研究院首席专家林春的签名赠书。 这是国内第一本关于OceanBase数据库实际替换过程总结的的实战书。打个比方可以说是从战场上下来分享战斗经验。读后感受颇深。我在这里讲讲我的感受。 第三章中提到的应用改造如何降本。应用改造是国产化替换…

旅游资源网站登录(jsp+ssm+mysql5.x)

旅游资源网站登录(jspssmmysql5.x) 旅游资源网站是一个为旅游爱好者提供全面服务的平台。网站登录界面简洁明了&#xff0c;用户可以选择以管理员或普通用户身份登录。成功登录后&#xff0c;用户可以访问个人中心&#xff0c;进行修改密码和个人信息管理。用户管理模块允许管…

STM32 HAL库之WDG示例代码

独立看门狗&#xff08;IWDG&#xff09; 在规定时间内按按键喂狗并将LED关闭&#xff0c;若产生看门狗复位则LED打开 初始化独立看门狗&#xff0c;在main.c中的 MX_IWDG_Init();&#xff0c;也就是iwdg.c中的初始化代码 void MX_IWDG_Init(void) {/* USER CODE BEGIN IWDG…

【第47节】windows程序的其他反调试手段下篇

目录 一、利用Hardware Breakpoints Detection 二、PatchingDetection - CodeChecksumCalculation 补丁检测&#xff0c;代码检验和 三、block input 封锁键盘、鼠标输入 四、使用EnableWindow 禁用窗口 五、利用ThreadHideFromDebugger 六、使用Disabling Breakpoints 禁…

【笔记ing】AI大模型-03深度学习基础理论

神经网络&#xff1a;A neural network is a network or circuit of neurons,or in a modern sense,an artificial neural network,composed of artificial neurons or nodes.神经网络是神经元的网络或回路&#xff0c;或者在现在意义上来说&#xff0c;是一个由人工神经元或节…

基于Djiango实现中药材数据分析与可视化系统

中药材数据分析与可视化系统 项目截图 登录 注册 首页 药材Top20 药材价格 产地占比 历史价格 新闻资讯 后台管理 一、项目概述 中药材数据分析与可视化系统是一个基于Django框架开发的专业Web应用&#xff0c;致力于对各类中药材数据进行全面、系统的采集、分析和可视化展示…

【AI飞】AutoIT入门七(实战):python操控autoit解决csf视频批量转换(有点难,AI都不会)

背景&#xff1a; 终极目标&#xff1a;通过python调用大模型&#xff0c;获得结果&#xff0c;然后根据返回信息&#xff0c;控制AutoIT操作电脑软件&#xff0c;执行具体工作。让AI更具有执行力。 已完成部分&#xff1a; 关于python调用大模型的&#xff0c;可以参考之前的…

leetcode 188. Best Time to Buy and Sell Stock IV

目录 题目描述 第一步&#xff0c;明确并理解dp数组及下标的含义 第二步&#xff0c;分析明确并理解递推公式 1.求dp[i][j].holding 2.求dp[i][j].sold 第三步&#xff0c;理解dp数组如何初始化 第四步&#xff0c;理解遍历顺序 代码 题目描述 这道题把第123题推广为一…

【笔记】【C++】【基础语法】作用域(scope)、持续时间(duration)和链接(linkage)

【笔记】【C】【基础语法】作用域&#xff08;scope&#xff09;、持续时间&#xff08;duration&#xff09;和链接&#xff08;linkage&#xff09; 最近正在复习学习C&#xff08;查漏补缺ing&#xff09;。记录一下学习所得。希望能将所学都整理成一系列的笔记和博客。优先…

Yarn的安装及环境配置

### Yarn 安装教程及环境配置步骤 #### 1. 检查 Node.js 是否已安装 在安装 Yarn 前&#xff0c;需确认系统中已经安装了 Node.js。可以通过以下命令验证其是否存在并获取版本号&#xff1a; bash node -v 如果未安装&#xff0c;则需要先完成 Node.js 的安装。 --- #### 2…

day2-小白学习JAVA---java第一个程序

java第一个程序 1、新建一个文件&#xff0c;以.java为结尾2、用编辑器打开后写入代码&#xff08;本人写前端&#xff0c;所以用vscode&#xff0c;也可用其他&#xff09;3、编译文件4、运行文件5、HelloWorld代码解释6、文档注释 1、新建一个文件&#xff0c;以.java为结尾 …

docker部署springboot(eureka server)项目

打jar包 使用maven&#xff1a; <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>17</source><target>17&…

解读《人工智能指数报告 2025》:洞察 AI 发展新态势

美国斯坦福大学 “以人为本人工智能研究院”&#xff08;HAI&#xff09;近日发布的第八版《人工智能指数报告》&#xff08;AI Index Report 2025&#xff09;备受全球瞩目。自 2017 年首次发布以来&#xff0c;该报告一直为政策制定者、研究人员、企业高管和公众提供准确、严…

OpenGauss 数据库介绍

OpenGauss 数据库介绍 OpenGauss 是华为基于 PostgreSQL 开发的企业级开源关系型数据库&#xff0c;现已成为开放原子开源基金会的项目。以下是 OpenGauss 的详细介绍&#xff1a; 一 核心特性 1.1 架构设计亮点 特性说明优势多核并行NUMA感知架构充分利用现代CPU多核性能行…

使用Trae CN分析项目架构

架构分析后的截图 A区是打开的项目、B区是源码区、C区是AI给出当前项目的架构分析结果。 如何用 Trae CN 快速学习 STM32 嵌入式项目架构 在嵌入式开发领域&#xff0c;快速理解现有项目的架构是一项关键技能。Trae CN 作为一款强大的分析工具&#xff0c;能帮助开发者高效剖…

MCP协议量子加密实践:基于QKD的下一代安全通信(2025深度解析版)

一、量子计算威胁的范式转移与MCP协议改造必要性 1.1 传统加密体系的崩塌时间表 根据IBM 2025年量子威胁评估报告&#xff0c;当量子计算机达到4000个逻辑量子比特时&#xff08;预计2028年实现&#xff09;&#xff0c;现有非对称加密体系将在72小时内被完全破解。工业物联网…