W React, obsługa zdarzeń jest realizowana przez specjalne właściwości, znane jako propsy, takie jak onClick dla zdarzeń kliknięcia. Te właściwości są przypisywane do komponentów i przyjmują funkcję, która zostanie wywołana w momencie wystąpienia zdarzenia. Ta metoda jest podobna do użycia addEventListener w czystym JavaScript, gdzie zdarzenie kliknięcia obsługujemy przez addEventListener('click', ...). W React jednak używamy onClick={...}. W React zdarzenia są nazwane zgodnie z konwencją camelCase i zawsze poprzedzone są przedrostkiem on.

Przykład:

function MyButton() {
  function handleClick() {
    alert('Kliknięto przycisk!');
  }

  return <button onClick={handleClick}>Kliknij mnie</button>;
}

Aby obsłużyć zdarzenie w sposób umożliwiający przekazanie dodatkowych argumentów do funkcji, można zastosować poniższe podejście:

function ItemList({ items }) {

  const handleItemClick = (itemId, event) => {
    event.preventDefault();
    alert(`Kliknięto element z ID: ${itemId}`);
  };

  return (
    <ul>
      {items.map((item) => (
        <li key={item.id}>
          {item.name}
          <button onClick={(e) => handleItemClick(item.id, e)}>Kliknij mnie</button>
        </li>
      ))}
    </ul>
  );
}

Obsługa wielu zdarzeń

Możliwe jest również łatwe obsługiwane wielu zdarzeń na pojedynczym elemencie poprzez zdefiniowanie różnych zdarzeń jako atrybutów tego elementu:

function MyComponent() {
  return (
    <div
      onClick={() => console.log('Klik!')}
      onMouseOver={() => console.log('Najechano!')}
    >
      Najedź i kliknij
    </div>
  );
}

Obiekt event

W czystym JavaScript, obiekt event jest automatycznie przekazywany do funkcji obsługującej zdarzenie jako jej pierwszy argument, gdy zdarzenie występuje. Dostarcza on szczegółowych informacji o zdarzeniu, które zostało wywołane. Na przykład, przy obsłudze zdarzenia kliknięcia (click), obiekt event może dostarczać informacje o pozycji kursora myszy w momencie kliknięcia.

React także przekazuje obiekt event do funkcji obsługującej zdarzenie, ale w formie „Syntetycznego Zdarzenia” (SyntheticEvent). Syntetyczne Zdarzenia to opakowania dla natywnych zdarzeń przeglądarki, zaprojektowane aby zapewnić spójne API zdarzeń w różnych przeglądarkach. Tak jak w czystym JavaScript, możemy użyć event.preventDefault() do zapobiegania domyślnej akcji zdarzenia.

function MyButton() {
  const handleClick = (event) => {
    console.log(event.type); // "click"
    event.preventDefault(); // Zapobiega domyślnej akcji (np. wysłaniu formularza)
  };
  return <button onClick={handleClick}>Kliknij mnie</button>;
}

Dodaj komentarz

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