Listas de reação


No React, você renderizará listas com algum tipo de loop.

O método de matriz JavaScript map()é geralmente o método preferido.

Se você precisar de uma atualização sobre o map()método, confira a seção ES6 .


Exemplo:

Vamos renderizar todos os carros da nossa garagem:

function Car(props) {
  return <li>I am a { props.brand }</li>;
}

function Garage() {
  const cars = ['Ford', 'BMW', 'Audi'];
  return (
    <>
      <h1>Who lives in my garage?</h1>
      <ul>
        {cars.map((car) => <Car brand={car} />)}
      </ul>
    </>
  );
}

ReactDOM.render(<Garage />, document.getElementById('root'));

Quando você executa esse código em seu create-react-app, ele funcionará, mas você receberá um aviso de que não há "chave" fornecida para os itens da lista.


w3schools CERTIFIED . 2022

Obter certificação!

Complete os módulos React, faça os exercícios, faça o exame e torne-se certificado w3schools!!

$ 95 INSCRIÇÃO

Chaves

As chaves permitem que o React acompanhe os elementos. Dessa forma, se um item for atualizado ou removido, apenas esse item será renderizado novamente em vez de toda a lista.

As chaves precisam ser exclusivas para cada irmão. Mas eles podem ser duplicados globalmente.

Geralmente, a chave deve ser um ID exclusivo atribuído a cada item. Como último recurso, você pode usar o índice do array como chave.

Exemplo:

Vamos refatorar nosso exemplo anterior para incluir chaves:

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'));


Teste-se com exercícios

Exercício:

Adicione o atributo que permite que o React acompanhe os elementos nas listas.

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>
    </>
  );
}

ReactDOM.render(<GroceryList />, document.getElementById('root'));