2

我正在尝试对我设法做到的操作使用 debounce,但是我想将 e 作为参数传递,但它不起作用。有什么办法可以做到这一点吗?

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

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

如果我拿走 e 它将进入函数,否则不会。我应该怎么做才能解决这个问题?

4

2 回答 2

3

您可以使用event.persist()将事件传递给 debounce 方法。

根据文档:

如果您想以某种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);
}
于 2017-06-29T08:27:33.203 回答
0

分配后this.testing

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

在某些情况下,您应该使用参数调用该方法

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

像这样的东西

于 2017-06-29T07:25:34.950 回答