news 2026/3/11 16:34:38

Vue customRef

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue customRef

customRef是 Vue 3 中的一个高级响应式 API,用于创建自定义的响应式引用(ref),允许开发者对依赖追踪和更新触发过程进行细粒度控制。它通过一个工厂函数接收tracktrigger两个函数,返回一个包含getset方法的对象,从而实现灵活的响应式逻辑。‌

基本用法

customRef的核心是自定义依赖管理:

  • 工厂函数‌:接收track(用于收集依赖)和trigger(用于触发更新)作为参数。
  • 返回对象‌:必须包含get方法(读取值时调用track收集依赖)和set方法(设置值时调用trigger触发更新)。‌

基础示例:

const customRefValue = customRef((track, trigger) => { let value = 0; return { get: () => { track(); // 收集依赖 return value; }, set: (newValue) => { value = newValue; trigger(); // 触发更新 } }; });

主要应用场景

customRef适用于需要精细控制响应式行为的场景:

  • 防抖/节流‌:在设置值后延迟触发更新,避免频繁响应。例如,实现输入防抖:
    function useDebouncedRef(value, delay) { let timer; return customRef((track, trigger) => ({ get: () => { track(); return value; }, set: (newValue) => { clearTimeout(timer); timer = setTimeout(() => { value = newValue; trigger(); }, delay); } })); }
  • 与外部状态集成‌:如本地存储(localStorage)同步:
    function useLocalStorage(key, initialValue) { return customRef((track, trigger) => ({ get: () => { track(); return localStorage.getItem(key) ?? initialValue; }, set: (value) => { localStorage.setItem(key, value); trigger(); } })); }
  • 性能优化‌:通过浅层响应式避免不必要的深层转换,适用于大型数据结构。‌

ref的区别

  • ref提供基础响应式包装,自动处理深层转换,适合常规场景。
  • customRef允许手动控制依赖追踪和更新时机,更灵活但需谨慎使用,例如避免在 getter 中返回新对象导致不必要的重新渲染。‌

注意事项

  • 依赖管理‌:确保在get中调用track,在set中调用trigger,否则响应式失效。
  • 副作用处理‌:结合effectScope等 API 管理副作用生命周期,避免内存泄漏。‌

通过customRef,开发者可以构建高度定制化的响应式逻辑,提升应用性能或实现复杂交互。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/7 3:02:18

运维系列数据库系列【仅供参考】:达梦数据库:关键字和保留字

达梦数据库:关键字和保留字 关键字和保留字 摘要 正文 关键字和保留字 摘要 本文介绍了DM系统的关键字和系统保留字,保留字又分为SQL保留字等多种类型,可查询系统视图V$RESERVED WORDS了解详情。同时特别指出部分关键字不能作为表的列名。还罗列了从A到Z的大量关键字和保留…

作者头像 李华
网站建设 2026/3/3 23:21:43

百度自动驾驶出租车将于2026年进入伦敦市场

机器人出租车将于2026年进入伦敦市场。中国互联网巨头百度周一宣布,其Apollo Go自动驾驶网约车服务将在2026年上半年在英国首都进行试点运营,并得到Uber的支持。Uber表示"很兴奋能够加速英国在未来出行领域的领导地位,为伦敦人在明年带来…

作者头像 李华
网站建设 2026/3/12 7:58:24

JVM类加载过程:从字节码到运行时对象的诞生

字节码的"变身记":从.class文件到运行时对象 一、类加载阶段 .class文件 -> 加载(Loading) -> 链接(Linking) -> 初始化 -> 使用 -> 卸载 ^ 验证>准备>解析 前两篇我们完成了: 解码:拆解了.cla…

作者头像 李华
网站建设 2026/3/10 13:29:44

光储(VSG)并网系统:超级电容储能的魅力

光储(虚拟同步发电机)VSG并网系统,储能为超级电容。 波形好。在当今追求清洁能源高效利用的时代,光储(虚拟同步发电机)VSG并网系统逐渐成为研究和应用的热点。今天咱们就来唠唠这其中以超级电容作为储能装置…

作者头像 李华
网站建设 2026/3/4 2:55:16

MATLAB 探索湍流对螺旋谱模式纯度的影响

MATLAB计算湍流对螺旋谱模式纯度影响 拉盖尔高斯光束经过湍流介质后的螺旋谱分布,探测概率,模式纯度在光学领域,拉盖尔高斯光束(Laguerre - Gaussian beam, LG beam)因其独特的螺旋相位结构而备受关注。然而&#xff0…

作者头像 李华
网站建设 2026/3/6 5:29:34

27.PXE高效批量网络装机

1.挂载镜像文件: mkdir -p /mnt/cdrom mount /dev/sr0 /mnt/cdrom 2.安装必要组件: sudo yum install -y httpd dhcp tftp-server syslinux xinetd 配置 TFTP 服务(传输引导文件) TFTP 用于传输 pxelinux.0、vmlinuz、initr…

作者头像 李华