No puedo obtener event.currentTarget
cuando uso addEventListener
con _.debounce()
.
Si la propiedad se cambia en la referencia del objeto de evento que está fuera del alcance de subrayado. Si usa una biblioteca como jQuery, eso puede ayudar, ya que crean un objeto de evento sintético al que debería poder hacer referencia sin problemas.
No creo que vayas a evitar esto. event
se reutiliza a medida que se propaga por el DOM, con currentTarget
cambiando para cada elemento con un oyente. violín
Pasar un segundo parámetro puede evitar esto. violín
var debounced = _.debounce(fn, 50);
document.querySelector('.debounced-input').addEventListener('keyup', function(event) {
debounced(event, event.currentTarget);
});
Sí, esto está fuera del alcance del guión bajo. Considere un micro marco de eventos DOM como gator
Aquí hay un ejemplo de cómo funciona con jQuery.
Todavía puedo obtener el elemento que normalmente tiene currentTarget
con this
; Acabo de abrir este problema para asegurarme de que lo que estoy viendo es realmente el comportamiento esperado.
@jridgewell tiene alguna idea de cómo solucionar esto en React onChange. cuando no uso el rebote, puedo acceder al evento adecuado en mi función onChange, pero cuando uso _.debounce
, pierdo el event
adecuado; consulte a continuación.
// 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 })
}
Ver mi segunda sugerencia .
Este es un tema de implementación. Necesita persistir el evento. onChange debe llamar a persistir y LUEGO pasar el evento persistente al controlador de rebote:
onChange_persist = (e) =>
{
e.persist();
e.onChange_debounced(e);
}
Comentario más útil
@jridgewell tiene alguna idea de cómo solucionar esto en React onChange. cuando no uso el rebote, puedo acceder al evento adecuado en mi función onChange, pero cuando uso
_.debounce
, pierdo elevent
adecuado; consulte a continuación.