Saya tidak bisa mendapatkan event.currentTarget
saat menggunakan addEventListener
dengan _.debounce()
.
Jika properti diubah pada referensi objek acara yang berada di luar cakupan Garis Bawah. Jika Anda menggunakan lib seperti jQuery yang dapat membantu karena mereka membuat objek acara sintetis yang seharusnya dapat Anda rujuk tanpa masalah.
Saya tidak berpikir Anda akan menyiasatinya. event
digunakan kembali saat menyebarkan DOM, dengan currentTarget
berubah untuk setiap elemen dengan pendengar. biola
Melewati parameter kedua bisa menyiasatinya. biola
var debounced = _.debounce(fn, 50);
document.querySelector('.debounced-input').addEventListener('keyup', function(event) {
debounced(event, event.currentTarget);
});
Ya, ini di luar cakupan garis bawah. Pertimbangkan kerangka kerja mikro acara DOM seperti gator
Berikut ini contohnya bekerja dengan jQuery.
Saya masih bisa mendapatkan elemen yang biasanya dimiliki currentTarget
dengan this
; Saya baru saja membuka masalah ini untuk memastikan apa yang saya lihat sebenarnya adalah perilaku yang diharapkan.
@jridgewell ada ide bagaimana menyiasatinya dalam React onChange. ketika saya tidak menggunakan debounce saya dapat mengakses acara yang tepat di fungsi onChange saya tetapi ketika saya menggunakan _.debounce
saya kehilangan event
yang tepat – lihat di bawah
// in my render
<input onChange={ _.debounce(this.updateNote.bind(this), 500) } />
// my change handler
updateNote(event) {
// undefined on event.target, get lodash event not <input/> event target
const note = event.target.value
this.sendNote({ note })
}
Lihat saran kedua saya.
Ini masalah implementasi. Anda harus mempertahankan acara tersebut. onChange harus memanggil persisten dan KEMUDIAN meneruskan acara persisten ke penangan yang di-debounce:
onChange_persist = (e) =>
{
e.persist();
e.onChange_debounced(e);
}
Komentar yang paling membantu
@jridgewell ada ide bagaimana menyiasatinya dalam React onChange. ketika saya tidak menggunakan debounce saya dapat mengakses acara yang tepat di fungsi onChange saya tetapi ketika saya menggunakan
_.debounce
saya kehilanganevent
yang tepat – lihat di bawah