使用Underscore去抖动事件对象[React]

时间:2017-06-29 07:06:01

标签: reactjs 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,它将进入该功能,否则不会。我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:3)

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

根据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);
}

答案 1 :(得分:0)

分配for(auto& s : string_array) buffer_temp.insert(buffer_temp.end(), s.begin(), s.end() + 1); 后,

  

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

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

调用该方法
this.testing

类似这样的事情