vue3组合式api中的手写防抖与节流

(一)防抖: 在一定时间间隔中重复点击,只执行最后一次; 如搜索框中,搜索的字符变动,当变动的时间间隔在0.5秒内时不执行查询,
打字最后一次停顿超过0.5s时才查询。采取频繁触发的最后一次操作

// 案例:
<template>
    <a-input-search  v-model:value="searchValue" placeholder="搜索" 
     @change="onSearch(searchValue)" /> 
</template>// html的搜索框
<script>
const debounce = (func, wait) => {
         let timeout     // 定义一个变量,作为初始化时间
         return function () {    // 返回执行防抖的方法
            const context = this   // 保存原函数的this上下文
            const args = arguments // 保存原函数的参数
            clearTimeout(timeout)
            timeout = setTimeout(() => {
                func.apply(context, args)  // 用于调用一个具有给定 this 值的函数
            }, wait)
         } 
}
const onSearch = debounce((value) => {
    getAreaList(value)
}, 500 )
</script>
// 简化代码:
<template>
    <a-input-search  v-model:value="searchValue" placeholder="搜索" 
     @change="onSearch(searchValue)" /> // html的搜索框
</template>
<script>
const debounce = (func, wait) => {
         let timeout     // 定义一个变量,作为初始化时间
         return function () {    // 返回执行防抖的方法
             clearTimeout(timeout)
             timeout = setTimeout(() => {
                 func.apply(this, arguments)// 用于调用一个具有给定 this 值的函数
             }, wait)
} 
}
const onSearch = debounce( (value) => {getAreaList(value)}, 500 )
</script>

(二)节流:在一定时间间隔中重复点击,只执行第一次操作; 

// 案例:
<script>
const throttle = (func, delay) => {
     let lastCall = 0
     return function (...args){
         const now = new Date().getTime()
         if (now - lastCall < delay) { // 比较距离上一次触发的时间
              return
         } 
         lastCall = now
         return func(...args)
     }
}
// 使用
window.addEventListener('resize', throttle(function() {
  console.log('窗口大小已改变');
}, 1000))
</script>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue3的组合API使用axios,可以按照以下步骤进行: 1. 首先,安装axios依赖。你可以使用npm或者yarn来进行安装,例如:`npm install axios`。 2. 在你需要使用axios的组件,引入axios模块。你可以使用`import axios from 'axios'`。 3. 在组件,创建一个异步函数用来发送axios请求。你可以使用`async/await`或者`Promise`来处理异步操作。例如: ```javascript async function fetchData() { try { const response = await axios.get('http://example.com/api/data'); const data = response.data; // 处理获取到的数据 } catch (error) { // 处理错误情况 } } ``` 4. 调用这个异步函数,可以在组件的生命周期钩子函数或者其他方法调用。例如,在created钩子函数调用: ```javascript export default { created() { fetchData(); } } ``` 或者在某个事件触发时调用: ```html <button @click="fetchData">获取数据</button> ``` ```javascript export default { methods: { async fetchData() { try { const response = await axios.get('http://example.com/api/data'); const data = response.data; // 处理获取到的数据 } catch (error) { // 处理错误情况 } } } } ``` 通过以上步骤,你就可以在Vue3的组合API使用axios来发送异步请求了。引用<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vue3全局配置 axios 的两种方](https://blog.csdn.net/weixin_56650035/article/details/125610295)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值