We want to hear from you!Take our 2020 Community Survey!

Esemény pooling

Megjegyzés

Ez az oldal csak a React 16 és korábbi veziókra, valamint React Native-re vonatkozik.

A React 17 a weben nem használ esemény pooling-ot.

Erről a React 17 változásról többet itt olvashatsz.

A SyntheticEvent objektumok egy közös készletben vannak. Ez azt jelenti, hogy a SyntheticEvent objektum újrafelhasználható és minden tulajdonság ki lesz nullázva az esemény callbackjének meghívása után. Ez például nem fog működni:

function handleChange(e) {
  // Ez nem fog műküdni, mert az esemény objektumok újra fel lesznek használva.
  setTimeout(() => {
    console.log(e.target.value); // Túl késő!
  }, 100);
}

Ha szeretnél egy esemény tulajdonságaihoz azután hozzáférni hogy az eseménykezelő lefutott, meg kell hogy hívd az e.persist() metódust:

function handleChange(e) {
  // Megakadályozza a Reactet a tulajdonságok visszaállításában:
  e.persist();

  setTimeout(() => {
    console.log(e.target.value); // Ez működik
  }, 100);
}
Hasznos volt ez az oldal?Az oldal szerkesztése