НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
React. W3Schools українською. Уроки для початківців

En

React Списки


У React ви будете відтворювати списки за допомогою певного типу циклу.

Метод масиву JavaScript map() зазвичай є кращим методом.

Якщо вам потрібно відновити знання про метод map() перегляньте розділ ES6.


Приклад:

Давайте відрендеримо всі машини з нашого гаража:

function Car(props) {
return <li>Я є { props.brand }</li>;
}

function Garage() {
const cars = ['Ford', 'BMW', 'Audi'];
return (
<>
  <h1>Хто живе в моєму гаражі?</h1>
  <ul>
    {cars.map((car) => <Car brand={car} />)}
  </ul>
</>
);
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Garage />);

Виконати приклад »

Якщо ви запустите цей код у своєму create-react-app, він працюватиме, але ви отримаєте попередження про відсутність "ключа" для елементів списку.


Ключі

Ключі дозволяють React відстежувати елементи. Таким чином, якщо елемент оновлено або видалено, буде повторно відображено лише цей елемент, а не весь список.

Ключі мають бути унікальними для кожного родича. Але їх можна дублювати глобально.

Як правило, ключ має бути унікальним ідентифікатором, призначеним кожному елементу. На крайній випадок, ви можете використовувати індекс масиву як ключ.

Приклад:

Давайте переробимо наш попередній приклад, щоб включити ключі:

function Car(props) {
return <li>Я є { props.brand }</li>;
}

function Garage() {
const cars = [
{id: 1, brand: 'Ford'},
{id: 2, brand: 'BMW'},
{id: 3, brand: 'Audi'}
];
return (
<>
  <h1>Хто живе в моєму гаражі?</h1>
  <ul>
    {cars.map((car) => <Car key={car.id} brand={car.brand} />)}
  </ul>
</>
);
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Garage />);

Виконати приклад »


Перевірте себе за допомогою вправ

Вправа:

Додайте атрибут, який дозволяє React відстежувати елементи в списках.

function GroceryList() {
const items = [
{id: 1, name: 'bread'},
{id: 2, name: 'milk'},
{id: 3, name: 'eggs'}
];

return (
<>
  <h1>Grocery List</h1>
  <ul>
    {items.map((item) => <li ={item.id}>{item.name}</li>)}
  </ul>
</>
);
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<GroceryList />);