triggerref 必须在修改 shallowref.value 内部属性后立即调用,用于手动通知 vue 刷新依赖;仅对 shallowref 有效,传参必须是 ref 实例本身,且须严格遵循“先改数据、后触发”顺序。

triggerRef 的触发时机非常明确:必须在修改 shallowRef.value 内部属性之后、且视图需要同步更新时立即调用。 它不是自动发生的,也不依赖数据变化本身,而是一个手动插入的“通知点”——告诉 Vue:“这个 shallowRef 虽然 .value 没换,但内容已变,请刷新依赖它的地方。”
什么时候必须调用?
仅当同时满足以下两个条件:
- 目标是 shallowRef 创建的引用(不是 ref、reactive 或普通对象)
- 你做了 .value 内部属性的直接修改,例如:
state.value.count++、config.value.url = 'new.com'、canvas.value.width = 1200
什么时候完全不需要?
以下情况 triggerRef 不起作用,也不应调用:
递归分析 Vue 项目组件依赖,从入口文件生成组件层级图,支持 Vue 2/3,输出组件名、文件路径和属性。适用于分析组件结构、排查依赖或了解项目架构。
- 对
ref()或reactive()的数据做任何修改 —— 它们本就会自动触发 - 只是替换了整个
.value,比如data.value = { a: 1 }—— 浅层 ref 对此天然响应 - 修改的是未被模板或 effect 读取过的字段 —— 没 track 就无 trigger 可言
调用顺序不能错
必须严格遵循“先改数据,再 triggerRef”:
- ✅ 正确:
user.value.age = 28; triggerRef(user); - ❌ 错误:
triggerRef(user); user.value.age = 28;(此时变更尚未发生,通知无效) - ❌ 错误:
triggerRef(user.value);(传入的是普通对象,API 拒绝处理)
它实际做了什么?
triggerRef 并不重新计算值,也不改变数据。它的作用是:
- 找到该 shallowRef 实例关联的所有依赖(如组件 render effect、computed、watchEffect)
- 把它们加入微任务队列,等待当前同步代码执行完后统一重跑
- 确保 DOM 更新只发生一次,即使多次调用 triggerRef 也会被合并
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!









