W React listy danych są zazwyczaj renderowane za pomocą metody .map() JavaScript. Metoda ta pozwala na iterowanie przez każdy element listy i zwrócenie komponentu lub elementu JSX dla każdego z nich.

Metody renderowania list:

Przechowywanie listy w zmiennej

Można stworzyć listę elementów, używając pętli for i przechowywać ją w zmiennej, którą następnie renderujemy:

function TodoList({ todos }) {
  const todoElements = [];

  for (let i = 0; i < todos.length; i++) {
    todoElements.push(<li key={todos[i].id}>{todos[i].text}</li>);
  }

  return (
    <ul>
      {todoElements}
    </ul>
  );
}

Za pomocą map()

function TodoList({ todos }) {
  return (
    <ul>
      {todos.map(todo => (
          <li key={todo.id}>{todo.text}</li>
        )
      )}
    </ul>
  );
}

Aktualizacja listy

Aby aktualizować listę, np. dodając lub usuwając elementy, powinniśmy korzystać z hooka useState. Pozwala to na dynamiczne zarządzanie listą i informowanie Reacta o konieczności zaktualizowania widoku

Przykład:

function addTask(taskTitle) {
  const newTask = {
    id: Date.now(),
    title: taskTitle,
    status: "Not Started",
  };
  setTasks([...tasks, newTask]);
}

Przykład usuwania:

function removeTask(taskId) {
  setTasks(tasks.filter(task => task.id !== taskId));
}

Zarządzanie kopią stanu przy każdej aktualizacji jest kluczowe, zapewniając niezmienność danych i umożliwiając Reactowi efektywne zarządzanie procesem renderowania.

Znaczenie atrybutu key

Atrybut key jest fundamentalny dla optymalizacji procesu renderowania list elementów w React. Dzięki niemu, React jest w stanie skutecznie identyfikować, które elementy zostały dodane, zmodyfikowane lub usunięte, co ma znaczący wpływ na wydajność aplikacji.

Co się dzieje, gdy nie dodasz key? Bez unikalnego identyfikatora, React wyświetli ostrzeżenie i może nie być w stanie efektywnie zarządzać aktualizacjami listy. To może prowadzić do niepotrzebnego ponownego renderowania większej części lub całej listy, negatywnie wpływając na wydajność, szczególnie w przypadku dużych zbiorów danych.

Informacja w konsoli odnośnie braku key w liście:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *