【问题标题】:Vuejs throttle search inputVuejs 油门搜索输入
【发布时间】:2020-11-04 04:25:41
【问题描述】:

我正在尝试实现搜索,并且输入是用户输入搜索词,并且每 1.5 秒我希望它到达端点以获取搜索结果。现在我有这样的输入

<input v-model="term" type="text" class="form-control" placeholder="Search"
           v-on:input="search($event.target.value)" @focusin="enableSearch" @focusout="clear">

我有一个使用 lodash 节流方法来调用端点的函数。

search: _.throttle(function (term) {
        if (this.term != null && this.term.length > 3) {
            this.toggleSearch();
            this.searchQueue(term)
        }
    }, 1500),

现在,当我输入诸如“Joe D”之类的搜索词而不是对端点进行一次调用时,我得到 4。看起来我每次按键都会得到一个端点调用。

不知道为什么节流不起作用。任何帮助将不胜感激。

【问题讨论】:

标签: javascript vue.js vuejs2


【解决方案1】:

您可能需要debounce 而不是throttle

Throttle 更多的是关于在每个时间范围内分隔事件,而 debounce 是将多个事件合并为一个。

这是一个很好的demo,它说明了不同之处,您可以阅读更多here

【讨论】:

  • 我都试过了,我没有接到一个电话,而是接到了 4 个电话
  • 您的打字速度是否低于 1.5 秒的去抖动率?如果是的话——这就是原因。如果没有 - 您可能在 searchQueue 或其他未显示的方法中做一些适得其反的事情。这是一个简单的demo
  • throttle 方法运行一次,但由于某种原因,我的 axios 调用运行了多次
  • 听起来油门与问题完全无关。是时候将相关代码添加到您的问题中了。
  • 重温旧问题,我发现您从未添加过searchQueuetoggleSearch 代码来查看它为什么会多次运行。
猜你喜欢
  • 1970-01-01
  • 2021-01-05
  • 2020-02-13
  • 2010-11-06
  • 1970-01-01
  • 2021-07-28
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多