19 列表与key之渲染列表的方式

在上一章中,我们讨论了《条件渲染之if语句的使用》。我们学习了如何通过条件语句来控制组件的渲染逻辑。现在,我们将转向另一个非常重要的主题:如何在 React 中渲染列表以及使用 key 来优化性能。

渲染列表

在 React 中,渲染列表非常常见。这通常用于显示数据集合,例如用户列表、产品列表等。我们可以通过 JavaScript 的 map 方法来轻松渲染一个数组。

基本示例

假设我们有一个包含水果名称的数组,以下是一个简单的示例,展示了如何渲染这个列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import React from 'react';

const fruits = ['苹果', '香蕉', '橘子', '葡萄'];

const FruitList = () => {
return (
<ul>
{fruits.map((fruit, index) => (
<li key={index}>{fruit}</li>
))}
</ul>
);
};

export default FruitList;

在这个例子中,我们使用 map 方法将 fruits 数组映射为一个 <li> 列表项。同时我们为每个项指定了 key={index},这个 key 是 React 用来标识每一项的唯一标识符。

函数组件中的列表渲染

使用函数组件渲染列表是最常见的做法。我们可以很方便地将列表渲染与组件结合,同时维护状态和行为。例如,我们可以维护一个水果的列表,并提供一个按钮来增加水果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import React, { useState } from 'react';

const App = () => {
const [fruits, setFruits] = useState(['苹果', '香蕉', '橘子']);

const addFruit = () => {
setFruits([...fruits, '新水果']);
};

return (
<div>
<button onClick={addFruit}>添加水果</button>
<ul>
{fruits.map((fruit, index) => (
<li key={index}>{fruit}</li>
))}
</ul>
</div>
);
};

export default App;

在这个例子中,我们使用 useState 来管理 fruits 状态,并在点击按钮时使用 setFruits 来更新列表。在渲染中,每个水果都有一个 key

使用 key 提升性能

虽然我们可以使用数组的索引作为 key,但这并不是最佳实践,因为它可能导致性能问题或 UI 问题。key 的主要作用是在列表变化时帮助 React 更高效地更新和重新渲染组件。

理想的 key 值

理想情况下,key 应该是某个唯一且稳定的标识符,例如数据库中的 ID。这有助于 React 在组件更新时追踪元素。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const fruits = [
{ id: 1, name: '苹果' },
{ id: 2, name: '香蕉' },
{ id: 3, name: '橘子' },
];

const FruitList = () => {
return (
<ul>
{fruits.map((fruit) => (
<li key={fruit.id}>{fruit.name}</li>
))}
</ul>
);
};

在此示例中,我们直接使用了水果对象的 id 属性作为 key,这是更推荐的做法,因为它是唯一的,并且在数据更新时不会发生变化。

为什么避免使用索引

使用索引作为 key 可能会导致以下问题:

  1. 性能问题:如果内容顺序发生变化,使用索引的 key 会导致 React 无法正确识别哪些元素改变了。
  2. 组件状态问题:使用索引可能导致组件状态不准确,特别是在我们有动画或者输入元素时。

小结

在本章中,我们探讨了如何在 React 中渲染列表,使用 map 方法将数据映射到组件。同时,我们了解了 key 的重要性,以优化性能和确保组件的正确性。下章中我们将进一步深入,讨论“使用 key 提升性能”的相关内容,探索更多细节和最佳实践。

确保理解列表渲染和 key 的使用,它们是 React 应用开发中非常基础也是至关重要的概念。在下一章,我们将更深入地了解 key 的优化性能技巧,敬请期待!

19 列表与key之渲染列表的方式

https://zglg.work/react-zero/19/

作者

AI免费学习网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论