Je ne parviens pas à obtenir le event.currentTarget
lorsque j'utilise addEventListener
avec _.debounce()
.
Si la propriété est modifiée sur la référence d'objet d'événement qui est en dehors de la portée de Underscore. Si vous utilisez une bibliothèque comme jQuery, cela peut vous aider car ils créent un objet d'événement synthétique que vous devriez pouvoir référencer sans problème.
Je ne pense pas que vous allez contourner cela. event
est réutilisé car il se propage dans le DOM, avec currentTarget
changeant pour chaque élément avec un écouteur. violon
Passer un deuxième paramètre peut contourner ce problème. violon
var debounced = _.debounce(fn, 50);
document.querySelector('.debounced-input').addEventListener('keyup', function(event) {
debounced(event, event.currentTarget);
});
Oui, cela sort du cadre du trait de soulignement. Considérez un micro framework d'événement DOM comme gator
En voici un exemple fonctionnant avec jQuery.
Je peux toujours obtenir l'élément que currentTarget
a habituellement avec this
; Je viens d'ouvrir ce problème pour m'assurer que ce que je vois est bien le comportement attendu.
@jridgewell toute idée de comment contourner cela dans un React onChange. quand je n'utilise pas debounce, je peux accéder à l'événement approprié dans ma fonction onChange mais quand j'utilise _.debounce
je perds le bon event
- voir ci-dessous
// 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 })
}
Voir ma deuxième suggestion .
C'est une question de mise en œuvre. Vous devez conserver l'événement. onChange doit appeler un persist et ALORS transmettre l'événement persistant au gestionnaire anti-rebond :
onChange_persist = (e) =>
{
e.persist();
e.onChange_debounced(e);
}
Commentaire le plus utile
@jridgewell toute idée de comment contourner cela dans un React onChange. quand je n'utilise pas debounce, je peux accéder à l'événement approprié dans ma fonction onChange mais quand j'utilise
_.debounce
je perds le bonevent
- voir ci-dessous