Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 使用Vue类组件语法取消绑定/限制方法_Typescript_Vue.js_Lodash_Vue Class Components - Fatal编程技术网

Typescript 使用Vue类组件语法取消绑定/限制方法

Typescript 使用Vue类组件语法取消绑定/限制方法,typescript,vue.js,lodash,vue-class-components,Typescript,Vue.js,Lodash,Vue Class Components,我正在开发一个组件,当搜索栏中的文本发生变化时,该组件会查询外部API,我正在尝试对该查询进行解块,以便它只能每2秒执行一次。我正试图使用lodash的debounce函数来实现这一点,并发现了多篇博客文章以及关于将其用于Vue组件的问题,但事情很复杂,因为我使用的是Typescript和Vue类组件语法()。老实说,我对这两个都很陌生 我找到了,但它不适用于类组件语法。基于对象的语法允许您将方法包装在.debounce中,如下所示: 导出默认值{ 方法:{ 节流方法:u.debounce(()

我正在开发一个组件,当搜索栏中的文本发生变化时,该组件会查询外部API,我正在尝试对该查询进行解块,以便它只能每2秒执行一次。我正试图使用lodash的
debounce
函数来实现这一点,并发现了多篇博客文章以及关于将其用于Vue组件的问题,但事情很复杂,因为我使用的是Typescript和Vue类组件语法()。老实说,我对这两个都很陌生

我找到了,但它不适用于类组件语法。基于对象的语法允许您将方法包装在
.debounce
中,如下所示:

导出默认值{
方法:{
节流方法:u.debounce(()=>{
log('我最多每两秒钟被解雇一次!')
}, 2000)
}
}
有没有一种方法可以使用Vue类组件语法执行类似的操作

以下是我的代码的相关部分(没有任何去抖动的尝试):


从“axios”导入axios;
从“lodash”进口;
从“Vue属性装饰器”导入{Component,Vue};
@组成部分
导出默认类FooSearch扩展Vue{
//资料
searchQuery='';
结果=[];
//方法
异步doSearch(){
试一试{
const response=等待axios.get('https://api.example.org/search', {
参数:{
query:this.searchQuery,
}
});
this.results=response.data.results;
}捕获(错误){
console.log('error');
console.log(错误);
}
}
已经讨论过了

基本上,您需要定义基本函数(就像您在
doSearch
中所做的那样),然后定义新的取消公告函数:

public doSearchDebounced = _.debounce(this.doSearch, 2000)

现在,您只需调用
dosearchdebound
,而不是
doSearch

,您就可以这样做了

<script lang='ts'>   
 import { debounce } from 'decko'

@debounce(1000)
 async doSearch() {
....
}
</script>

从“decko”导入{debounce}
@去盎司(1000)
异步doSearch(){
....
}
<script lang='ts'>   
 import { debounce } from 'decko'

@debounce(1000)
 async doSearch() {
....
}
</script>