当前位置: 首页 > news >正文

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.xdnf.cn/news/7705.html

相关文章:

  • DFS/BFS专练-搞定图论基础!(从海岛问题过渡至图论基础应用C++/C)
  • 无刷电机槽数相同、转子极数不同的核心区别
  • Nacos安装及数据持久化
  • ESP32之本地HTTP服务器OTA固件升级流程,基于VSCode环境下的ESP-IDF开发(附源码)
  • 【Spring Boot】MyBatis入门:连接Mysql数据库、测试单元、连接的常见错误
  • 汇编语言中的数据
  • 基于C++(MFC)的细胞识别程序
  • 人工智能在后端开发中的革命:从架构到运维
  • 前端:uniapp中uni.pageScrollTo方法与元素的overflow-y:auto之间的关联
  • 极狐GitLab 项目导入导出设置介绍?
  • 架构师面试(三十一):IM 消息收发逻辑
  • 手撕STL——vector
  • 利用DeepSeek设计一个HTML批量转换工具设计
  • Hadoop的三大结构及其作用?
  • hadoop的三大结构及各自的作用
  • yarn的定义
  • 「数据可视化 D3系列」入门第九章:交互式操作详解
  • 自动驾驶与机器人算法学习
  • 【区块链通用服务平台及组件】京北方分布式身份管理平台 | FISCO BCOS 应用案例
  • java八股之并发编程
  • 医院数据中心智能化数据上报与调数机制设计
  • 仿腾讯会议项目开发——界面关闭功能实现
  • Flink介绍——实时计算核心论文之Kafka论文详解
  • java输出、输入语句
  • Vue3 Composition API与十大组件开发案例详解
  • 杂记-LeetCode中部分题思路详解与笔记-HOT100篇-其四
  • 【datawhaleAI春训营第一期笔记】AI+航空安全
  • Tensorflow实现用接口调用模型训练和停止训练功能
  • Mac mini 安装mysql数据库以及出现的一些问题的解决方案
  • 【前端HTML生成二维码——MQ】