React 列表

在 React 中,您将使用某种类型的循环渲染列表。

JavaScript map() 数组方法通常是首选方法。

如果需要有关 map() 方法的更新,React ES6 章节
实例:

让我们把 garage 里所有的 cars 都渲染出来:

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. function Car(props) {
  4. return <li>I am a { props.brand }</li>;
  5. }
  6. function Garage() {
  7. const cars = ['Ford', 'BMW', 'Audi'];
  8. return (
  9. <>
  10. <h2>Who lives in my garage?</h2>
  11. <ul>
  12. {cars.map((car) => <Car brand={car} />)}
  13. </ul>
  14. </>
  15. );
  16. }
  17. ReactDOM.render(<Garage />, document.getElementById('root'));

当您在 create-react-app 中运行此代码时,它将起作用,但您将收到一条警告,提示没有为列表项提供 "key"。


Keys

Keys 让 React 跟踪元素。这样,如果某个项被更新或删除,则只有该项将被重新渲染,而不是整个列表。

每个同一级别的 Keys 都必须是唯一的。但它们可以在全局范围内复制。

通常,Keys 应该是分配给每个项目的唯一 ID。最后,您可以使用数组索引作为 Keys。
实例:

让我们重构前面的示例以包含 Keys:

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. function Car(props) {
  4. return <li>I am a { props.brand }</li>;
  5. }
  6. function Garage() {
  7. const cars = [
  8. {id: 1, brand: 'Ford'},
  9. {id: 2, brand: 'BMW'},
  10. {id: 3, brand: 'Audi'}
  11. ];
  12. return (
  13. <>
  14. <h1>Who lives in my garage?</h1>
  15. <ul>
  16. {cars.map((car) => <Car key={car.id} brand={car.brand} />)}
  17. </ul>
  18. </>
  19. );
  20. }
  21. ReactDOM.render(<Garage />, document.getElementById('root'));