trigger 是 vue3 响应式系统中负责派发更新的核心机制,由 proxy 的 set 拦截器隐式调用,根据操作类型(set/add/delete)触发对应依赖;它与 triggerref 的区别在于:前者是内部函数作用于 reactive/ref,后者是供开发者手动唤醒 shallowref 响应的 api。

trigger 函数是 Vue3 响应式系统中负责“派发更新”的核心机制。它不主动监听变化,而是在数据被修改后,自动找出所有依赖该数据的副作用函数(比如 effect、计算属性、组件渲染函数),并依次执行它们,从而驱动视图更新。
trigger 是怎么被调用的?
它由 Proxy 的 set 拦截器隐式触发——当你给响应式对象赋值(如 state.count = 5)、添加属性(obj.newKey = 'val')或删除属性(delete obj.key)时,Vue 内部的 set 处理逻辑会判断操作类型(SET / ADD / DELETE),再调用 trigger 并传入目标对象、操作类型和相关键名。
- 对普通对象,trigger 查找
targetMap.get(target).get(key)对应的依赖集合 - 对数组,除了 key 还会检查
'length'依赖(例如 push 后 length 变了) - 若为新增属性(ADD)且目标是数组,还会触发 length 相关的 effect
trigger 和 triggerRef 有什么区别?
trigger 是底层运行时函数,用户代码中不可直接调用;triggerRef 则是暴露给开发者的 API,专用于 shallowRef 场景。
vue-composition-api-best-practices
Vue 3 组合式 API 与
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章
