开发者问题收集

Lodash 的 debounce 和 vue3

2023-01-14
621

我在使用 lodash 和 vue3 的 debounce 时遇到了问题,您能帮我找出此代码中的问题吗?

Pinia's Store

actions: {
    fetchUsers(targetAppId?: string) {
      this.loading = true;
      AppsService.getUsers(targetAppId)
        .then(response => {
          this.users = response.data.users
          // This statement works without debounce
          debounce(() => { this.loading = false }, 1000)
        })
    },
  }
1个回答

这永远不会按照您希望的方式工作。

就像 sifriday 所说的那样, debounce 返回一个(新)函数,您需要重新调用该函数才能正确工作去抖动。但在您的商店中,您有一个匿名函数,因此没有实际去抖动它的参考。

您可以添加 loading 状态,然后在 commit 上执行去抖动以切换此状态,或者将操作本身包装在去抖动中。

zangab
2023-01-14