React 列表
在 React 中,您将使用某种类型的循环渲染列表。
JavaScript map()
数组方法通常是首选方法。
如果需要有关
map()
方法的更新,React ES6 章节。实例:
让我们把 garage 里所有的 cars 都渲染出来:
import React from 'react';
import ReactDOM from 'react-dom';
function Car(props) {
return <li>I am a { props.brand }</li>;
}
function Garage() {
const cars = ['Ford', 'BMW', 'Audi'];
return (
<>
<h2>Who lives in my garage?</h2>
<ul>
{cars.map((car) => <Car brand={car} />)}
</ul>
</>
);
}
ReactDOM.render(<Garage />, document.getElementById('root'));
当您在 create-react-app
中运行此代码时,它将起作用,但您将收到一条警告,提示没有为列表项提供 "key"。
Keys
Keys 让 React 跟踪元素。这样,如果某个项被更新或删除,则只有该项将被重新渲染,而不是整个列表。
每个同一级别的 Keys 都必须是唯一的。但它们可以在全局范围内复制。
通常,Keys 应该是分配给每个项目的唯一 ID。最后,您可以使用数组索引作为 Keys。
实例:
让我们重构前面的示例以包含 Keys:
import React from 'react';
import ReactDOM from 'react-dom';
function Car(props) {
return <li>I am a { props.brand }</li>;
}
function Garage() {
const cars = [
{id: 1, brand: 'Ford'},
{id: 2, brand: 'BMW'},
{id: 3, brand: 'Audi'}
];
return (
<>
<h1>Who lives in my garage?</h1>
<ul>
{cars.map((car) => <Car key={car.id} brand={car.brand} />)}
</ul>
</>
);
}
ReactDOM.render(<Garage />, document.getElementById('root'));