如何在Vue中实现长尾词的输入防抖功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计863个文字,预计阅读时间需要4分钟。
目录
1.防抖函数
2.Vue中使用debounce防抖函数
1. 防抖函数
防抖函数是一种性能优化的技术,用于减少函数在短时间内被频繁调用的情况。以下是一个简单的防抖函数实现:javascriptfunction debounce(func, wait) { let timeout=null; return function() { const context=this; const args=arguments; clearTimeout(timeout); timeout=setTimeout(function() { func.apply(context, args); }, wait); };}
2. Vue中使用debounce防抖函数在Vue中,可以使用防抖函数来优化表单输入等场景。以下是如何在Vue中使用debounce防抖函数的示例:
javascriptfunction debounce(func, wait) { let timeout=null; return function() { const context=this; const args=arguments; clearTimeout(timeout); timeout=setTimeout(function() { func.apply(context, args); }, wait); };}
// 在Vue组件中export default { data() { return { // ... }; }, methods: { ajaxAction() { // 执行Ajax操作 } }, mounted() { const debouncedAjax=debounce(this.ajaxAction, 2500); $(this.$refs.textarea).on('keydown', debouncedAjax); }};
在上面的代码中,我们首先定义了一个防抖函数`debounce`,然后在Vue组件的`mounted`生命周期钩子中,我们将`ajaxAction`方法使用`debounce`函数进行了防抖处理,并将处理后的函数绑定到textarea的`keydown`事件上。这样,当用户在textarea中输入时,只有在用户停止输入超过2500毫秒后,`ajaxAction`方法才会被调用。
目录
- 1.防抖函数
- 2.Vue中使用debouce防抖函数
1.防抖函数
假定两次 Ajax 通信的间隔不得小于2500毫秒,上面的代码可以改写成下面这样。
$('textarea').on('keydown', debounce(ajaxAction, 2500)); function debounce(fn, delay){ var timer = null; // 声明计时器 return function() { var context = this; var args = arguments; clearTimeout(timer); timer = setTimeout(function () { fn.apply(context, args); }, delay); }; }
上面代码中,只要在2500毫秒之内,用户再次击键,就会取消上一次的定时器,然后再新建一个定时器。这样就保证了回调函数之间的调用间隔,至少是2500毫秒。
2.Vue中使用debouce防抖函数
创建一个 debounced(防抖动)函数,该函数会从上一次被调用后,延迟 wait 毫秒后调用 func 方法。 debounced(防抖动)函数提供一个 cancel 方法取消延迟的函数调用以及 flush 方法立即调用。 可以提供一个 options(选项) 对象决定如何调用 func 方法,options.leading 与|或 options.trailing 决定延迟前后如何触发
(注:是 先调用后等待 还是 先等待后调用)。
func 调用时会传入最后一次提供给 debounced(防抖动)函数 的参数。 后续调用的 debounced(防抖动)函数返回是最后一次 func 调用的结果。
Lodash debouce参数:
func (Function): 要防抖动的函数。[wait=0] (number): 需要延迟的毫秒数。[options=] (Object): 选项对象。[options.leading=false] (boolean): 指定在延迟开始前调用。[options.maxWait] (number): 设置 func 允许被延迟的最大值。[options.trailing=true] (boolean): 指定在延迟结束后调用。
<template> <el-input v-model="value" size="mini" placeholder="请输入.." clearable @keydown.enter="handleSearch" ></el-input> </template> <script> import _ from 'lodash' export default { data() { return { value: '' } }, create() { this.handleSearch = _.debounce(() => { // 获取列表 this.getList(); }, 300); }, beforeDestroy() { // 取消该函数的防抖动调用 this.handleSearch.cancel(); }, } </script>
到此这篇关于如何在Vue中使用debouce防抖函数的文章就介绍到这了,更多相关Vue中使用debouce防抖函数内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!
本文共计863个文字,预计阅读时间需要4分钟。
目录
1.防抖函数
2.Vue中使用debounce防抖函数
1. 防抖函数
防抖函数是一种性能优化的技术,用于减少函数在短时间内被频繁调用的情况。以下是一个简单的防抖函数实现:javascriptfunction debounce(func, wait) { let timeout=null; return function() { const context=this; const args=arguments; clearTimeout(timeout); timeout=setTimeout(function() { func.apply(context, args); }, wait); };}
2. Vue中使用debounce防抖函数在Vue中,可以使用防抖函数来优化表单输入等场景。以下是如何在Vue中使用debounce防抖函数的示例:
javascriptfunction debounce(func, wait) { let timeout=null; return function() { const context=this; const args=arguments; clearTimeout(timeout); timeout=setTimeout(function() { func.apply(context, args); }, wait); };}
// 在Vue组件中export default { data() { return { // ... }; }, methods: { ajaxAction() { // 执行Ajax操作 } }, mounted() { const debouncedAjax=debounce(this.ajaxAction, 2500); $(this.$refs.textarea).on('keydown', debouncedAjax); }};
在上面的代码中,我们首先定义了一个防抖函数`debounce`,然后在Vue组件的`mounted`生命周期钩子中,我们将`ajaxAction`方法使用`debounce`函数进行了防抖处理,并将处理后的函数绑定到textarea的`keydown`事件上。这样,当用户在textarea中输入时,只有在用户停止输入超过2500毫秒后,`ajaxAction`方法才会被调用。
目录
- 1.防抖函数
- 2.Vue中使用debouce防抖函数
1.防抖函数
假定两次 Ajax 通信的间隔不得小于2500毫秒,上面的代码可以改写成下面这样。
$('textarea').on('keydown', debounce(ajaxAction, 2500)); function debounce(fn, delay){ var timer = null; // 声明计时器 return function() { var context = this; var args = arguments; clearTimeout(timer); timer = setTimeout(function () { fn.apply(context, args); }, delay); }; }
上面代码中,只要在2500毫秒之内,用户再次击键,就会取消上一次的定时器,然后再新建一个定时器。这样就保证了回调函数之间的调用间隔,至少是2500毫秒。
2.Vue中使用debouce防抖函数
创建一个 debounced(防抖动)函数,该函数会从上一次被调用后,延迟 wait 毫秒后调用 func 方法。 debounced(防抖动)函数提供一个 cancel 方法取消延迟的函数调用以及 flush 方法立即调用。 可以提供一个 options(选项) 对象决定如何调用 func 方法,options.leading 与|或 options.trailing 决定延迟前后如何触发
(注:是 先调用后等待 还是 先等待后调用)。
func 调用时会传入最后一次提供给 debounced(防抖动)函数 的参数。 后续调用的 debounced(防抖动)函数返回是最后一次 func 调用的结果。
Lodash debouce参数:
func (Function): 要防抖动的函数。[wait=0] (number): 需要延迟的毫秒数。[options=] (Object): 选项对象。[options.leading=false] (boolean): 指定在延迟开始前调用。[options.maxWait] (number): 设置 func 允许被延迟的最大值。[options.trailing=true] (boolean): 指定在延迟结束后调用。
<template> <el-input v-model="value" size="mini" placeholder="请输入.." clearable @keydown.enter="handleSearch" ></el-input> </template> <script> import _ from 'lodash' export default { data() { return { value: '' } }, create() { this.handleSearch = _.debounce(() => { // 获取列表 this.getList(); }, 300); }, beforeDestroy() { // 取消该函数的防抖动调用 this.handleSearch.cancel(); }, } </script>
到此这篇关于如何在Vue中使用debouce防抖函数的文章就介绍到这了,更多相关Vue中使用debouce防抖函数内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

