反应搜索 onChange 取消请求

Posted

技术标签:

【中文标题】反应搜索 onChange 取消请求【英文标题】:React search onChange cancel request 【发布时间】:2018-06-25 07:26:04 【问题描述】:

我正在使用 Axios 处理搜索功能 onChange。它工作正常。

但问题是当用户将输入删除为空时。请求仍然发送。

我的代码。

    handleSearch = (e) => 
    const query = e.target.value;
    if(this.timeout) clearTimeout(this.timeout);

    this.timeout = setTimeout(() => 
        if (query === '') // do something ????

        requestApi.searchMultiData('search/multi', query)
            .then(response => 
                this.props.data(response.data);
            )
            .catch(error => console.log(error));
    , 300);
    ;

我该如何处理?我的解决方案是文本输入为空时。该请求应被取消。有什么想法吗?谢了。

【问题讨论】:

if (query !== '') requestApi.searchMultiData('search/multi', query) .... if (query === '') return(在您的声明之后) 谢谢大家,它的工作。对不起我的简单问题。 其实:handleSearch = (e) => const query = e.target.value; if(this.timeout) clearTimeout(this.timeout); if (query === '') return; this.timeout = setTimeout(() => 【参考方案1】:

再看一遍,我建议这样做:

handleSearch = (e) =>  
  const query = e.target.value; 
  if (this.timeout) clearTimeout(this.timeout); 
  if (query.trim() === '') return; // here is the logical place to leave
  this.timeout = setTimeout(() => 

【讨论】:

【参考方案2】:

您正在寻找early exit from function 的方法。这意味着如果满足条件(query 为空:请参阅如何实现它here),您的回调函数中的部分或大部分代码将不会被执行。

我还建议使用trim() 删除空格;否则,像 这样的值将被认为是正确的,但它们可能不是。

【讨论】:

以上是关于反应搜索 onChange 取消请求的主要内容,如果未能解决你的问题,请参考以下文章

Html checkBox onchange不起作用

反应复选框:event.preventDefault() 中断 onChange 函数 - 为啥?

反应本机最后一个文本输入框最后没有设置值 onChange

当状态改变时,对文本字段做出反应 onChange 更新整个组件

反应:onChange 不更新输入字段的值

反应 onChange 不更新状态