vue3-api之customRef()

// 这个官方文档介绍也是主要用于防抖节流

<template>
  <input type="text" v-model="keyWord" />
  <h3>{{ keyWord }}</h3>
</template>

<script>
// import { ref } from "vue";
import { customRef } from "vue"; // 作用:创建一个自定义的ref,并对其依赖项跟踪和更新触发进行显式控制.比如说可以用来实现防抖函数。

export default {
  name: "App",
  setup() {
    let timer = null
    // 自定义一个ref名为: ref_afanfan
    function ref_afanfan(value, time) {
      // let timer = null
      // console.log("---myRef---", value); // ---myRef--- hello
      return customRef((track, trigger) => {
        return {
          get() {
            // 告诉vue追踪数据
            track();
            return value;
          },
          set(newValue) {
            // 防抖
            clearTimeout(this.timer)
            this.timer =  setTimeout(() => {
              // 更换数据
              value = newValue;
              // 告诉vue去触发页面更新
              trigger();
            }, time);
          },
        };
      });
    }

    // let keyWord = ref('hello'); // 使用vue提供的ref
    let keyWord = ref_afanfan("hello",500);
    console.log('keyWord===',keyWord.value)

    return {
      timer,
      keyWord,
    };
  },
};
</script>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值