Vue 响应式数据 customRef 怎么写?手把手教你实现输入框防抖

夏辰姑娘_4610

夏辰姑娘_4610

2026-03-23

895人浏览

原创

customref 是 vue 提供的高级响应式 api,用于自定义 ref 的 getter 和 setter 行为;它通过缓存值与防抖定时器配合,实现输入停止后才更新视图,避免频繁响应。

vue 响应式数据 customref 怎么写?手把手教你实现输入框防抖

customRef 是什么,为什么用它做防抖

Vue 的 customRef 是一个高级响应式 API,允许你完全控制 ref 的 getter 和 setter 行为。它不直接存储值,而是让你定义「什么时候触发更新」和「怎么读写数据」——这正好适合实现输入防抖:我们想让视图只在用户停止输入一段时间后才更新,而不是每次按键都响应。

手写防抖 customRef 的核心逻辑

关键在于:setter 中不立即赋值,而是启动防抖定时器;getter 中返回当前缓存的值(不是原始输入值)。需要两个变量配合:内部缓存值(真正参与响应式的值)和待提交的输入值(用户实时打的字)。

  • 用 ref 存内部缓存值(供模板响应式读取)
  • 用普通变量存最新输入(避免闭包问题,也方便 clearTimeout)
  • 每次 set 触发时清除旧定时器、设置新定时器,时间到再把输入值同步给缓存 ref
  • get 始终返回缓存 ref 的值,保证视图只看到“防抖后的结果”

完整可运行代码示例

下面是一个封装好的 useDebouncedRef Hook:

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app快速上手
uni-app快速上手

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 17.1万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 2.5万人学习