vue性能优化-利用防抖和pinia获取基础数据

目录

1、什么是防抖

2、防抖通用方法

3、什么是闭包

4、apply是干什么的

5、新建utils.js文件

6、新建UseBaseData仓库

7、使用


1、什么是防抖

在一段时间内多次触发函数,只执行最后一次,常用的场景有搜索框输入,用户连续输入时不发出请求,当用户停止输入一段时间后才发请求。

2、防抖通用方法

const DEBOUNCE = (func, wait) => {
  let timeout;
  return function (...args) {
    if(timeout) clearTimeout(timeout);
    timeout = setTimeout(() => {
      func.apply(this, args);
    }, wait);
  };
}

其中涉及到闭包、apply的使用,此代码可以直接复制

3、什么是闭包

闭包(closure)是一个函数以及其捆绑的周边环境状态(lexical environment词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。

具体请参考:闭包 - JavaScript | MDN

4、apply是干什么的

以给定的值调用方法

具体请参考:apply使用方法

5、新建utils.js文件

utils文件,顾名思义就是工具文件,一般用于保存公共函数,在utils.js中新增防抖方法

6、新建UseBaseData仓库

引入防抖方法,以获取城市列表为例,在state中定义数组cityList,action新增两个方法,分别是fetchCity和getCity,fetchCity用于远端请求city数据,并且复制给cityList,getCity则是使用防抖,调用fetchCity,具体代码如下

    async fetchCity() {
      if (this.cityList = JSON.parse(localStorage.getItem('cityList'))) {
        return
      }
      // 此处请求获取城市接口
      const { data } = await getList()
      this.cityList = data
      localStorage.setItem('cityList', JSON.stringify(data))
    },
    getCity: DEBOUNCE(async function () {
      await this.fetchCity();
    }, 300),

7、使用

假如页面中有城市下拉框,那么在页面的onMounted方法中调用UseBaseData中的getCity方法,并且给下拉框的option绑定UseBaseData中的cityList。store的具体使用可以参考简介 | Pinia

vue2中也可参考vuex

完结撒花~~~~



 

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值