列表渲染

在 React 中,你可以使用数组的 map 方法来渲染列表元素。

渲染多个组件

你可以通过使用 在 JSX 中构建一个元素集合。

使用 map 渲染列表

const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) =>
  <li>{number}</li>
);

return (
  <ul>{listItems}</ul>
);

基础列表组件

通常你会将列表渲染到一个组件中。

function NumberList(props) {
  const numbers = props.numbers;
  const listItems = numbers.map((number) =>
    <li key={number.toString()}>
      {number}
    </li>
  );

  return (
    <ul>{listItems}</ul>
  );
}

const numbers = [1, 2, 3, 4, 5];
return <NumberList numbers={numbers} />;

Keys

Keys 帮助 React 识别哪些元素改变了/添加了或被删除了。应该给数组中的每个元素赋予一个确定的标识。

使用 key

const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) =>
  <li key={number.toString()}>
    {number}
  </li>
);

key 的选择

  • 最佳: 使用数据中唯一的 ID
  • 备选: 使用索引 (但不推荐在列表会重排时使用)
const todoItems = todos.map((todo) =>
  <li key={todo.id}>
    {todo.text}
  </li>
);

用 key 提取组件

key 只有在数组的上下文中才有意义。例如,如果你提取一个 ListItem 组件,应该把 key 保留在数组中的 <ListItem /> 元素上,而不是放在 ListItem 组件自身的 <li> 根元素上。

下一步

继续学习保持组件纯粹