代码之家  ›  专栏  ›  技术社区  ›  Thuan Nguyen

在更改取消请求时响应搜索

  •  0
  • Thuan Nguyen  · 技术社区  · 6 年前

    我使用AXIOS处理搜索功能。它工作得很好。

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

    我的密码。

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

    我该怎么办?我的解决方案是当文本输入为空时。请求应该被取消。你有什么想法吗?特克斯。

    2 回复  |  直到 6 年前
        1
  •  2
  •   mplungjan    6 年前

    再看一遍,我建议:

    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
  •  0
  •   Yury Fedorov    6 年前

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

    我也建议你用 trim() 删除空白;否则,值如下 会被认为是正确的,但他们可能不是。