Listy reakcji


W React wyrenderujesz listy z jakimś rodzajem pętli.

Metoda tablicowa JavaScript map()jest ogólnie preferowaną metodą.

Jeśli potrzebujesz odświeżenia map()metody, zapoznaj się z sekcją ES6 .


Przykład:

Wyrenderujmy wszystkie samochody z naszego garażu:

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

Kiedy uruchomisz ten kod w swoim create-react-app, zadziała, ale otrzymasz ostrzeżenie, że dla elementów listy nie ma żadnego „klucza”.


w3schools CERTIFIED . 2022

Zostać certyfikowanym!

Uzupełnij moduły React, wykonaj ćwiczenia, podejdź do egzaminu i uzyskaj certyfikat w3schools!!

95 $ ZAPISZ

Klucze

Klawisze pozwalają Reactowi śledzić elementy. W ten sposób, jeśli element zostanie zaktualizowany lub usunięty, tylko ten element zostanie ponownie wyrenderowany, a nie cała lista.

Klucze muszą być unikalne dla każdego rodzeństwa. Ale można je duplikować globalnie.

Zasadniczo klucz powinien być unikalnym identyfikatorem przypisanym do każdego elementu. W ostateczności możesz użyć indeksu tablicy jako klucza.

Przykład:

Zrefaktoryzujmy nasz poprzedni przykład, aby uwzględnić klucze:

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


Sprawdź się za pomocą ćwiczeń

Ćwiczenie:

Dodaj atrybut, który pozwala Reactowi śledzić elementy na listach.

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