Получение объекта события с помощью команды Underscore debounce[React]

Я пытаюсь использовать debounce в действии, которое мне удалось сделать, однако я хочу передать его как параметр, но оно не работает. Есть ли способ, которым я мог бы сделать это?

 constructor(props, context) {
    super(props, context);
    this.testing = _.debounce(this.testing.bind(this), 2000);
}

 @action testing(e) {
     alert("debounced!!");
     //use e.target ... 
   }

Если я заберу e, он попадет в функцию, иначе нет. Что я должен сделать, чтобы решить эту проблему?

2 ответа

Решение

Вы можете использовать event.persist() для передачи события методу debounce.

Согласно DOCS:

Если вы хотите получить доступ к свойствам события в asynchronous Кстати, вы должны позвонить event.persist() на событии, которое удалит синтетическое событие из пула и позволит удерживать ссылки на событие в пользовательском коде.

Таким образом, вы можете использовать событие как

constructor(props, context) {
    super(props, context);
    this.testing = _.debounce(this.testing.bind(this), 2000);
}

 @action testing(e) {
     alert("debounced!!");
     //use e.target ... 
   }
onChange = (e) => {
    e.persist();
    this.testing(e);
}

После назначения this.testing,

this.testing = _.debounce (this.testing.bind (this), 2000);

в некоторых случаях вы должны вызывать этот метод с параметром

onSumbit(e){
    this.testing(e);
}

что-то вроде этого

Другие вопросы по тегам