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