onBeforeUpdate 在组件响应式数据变更导致重新渲染前触发,此时响应式数据已更新但 DOM 尚未更新。它不用于首次渲染或子组件更新,适用于保存旧 DOM 状态等场景。
onBeforeUpdate 是 Vue Composition API 中的一个生命周期钩子,用于在组件更新(即响应式数据变化触发 DOM 重新渲染)之前执行逻辑。它只在组件已挂载、且存在响应式状态变更时被调用,不适用于首次渲染(首次渲染前用 onBeforeMount)。
当组件内使用的响应式数据(如 ref、reactive)发生改变,并且这些变化会导致当前组件的模板需要重新渲染时,Vue 会在虚拟 DOM 打补丁(patch)前调用 onBeforeUpdate。注意:它不会因为子组件更新而触发,只属于当前组件自身的更新周期。
ref.value = ... 或 state.xxx = ... → 模板依赖该值 → 触发v-if 切换显示/隐藏 → 组件卸载/挂载 → 不走 update 阶段,不触发在 setup() 函数或 script setup 语法中,直接导入并调用:
import { onBeforeUpdate, ref } from 'vue'export default {setup() {const count = ref(0)onBeforeUpdate(() => {// 此时 DOM 还没更新,但响应式数据已是新值console.log('更新前:count =', count.value) // 输出更新后的值// 可在此保存旧 DOM 状态、取消动画、清理定时器等})return { count }}}
⚠️ 注意:onBeforeUpdate 回调中访问的响应式变量已经是更新后的新值(因为响应式系统已同步更新了依赖),但真实 DOM 尚未刷新。
这个钩子适合做DOM 更新前的准备性操作,尤其涉及与 DOM 紧密耦合的逻辑:
onUpdated 做闭环)不推荐在这里修改响应式数据——虽然不会报错,但可能引发额外更新循环,逻辑不易追踪。
不要把它当成“数据变化监听器”:它不接收参数,也无法得知具体哪个值变了;若需响应特定数据变化,请优先用 watch 或 watchEffect。
首次渲染不触发:想在初始渲染前做事,用 onBeforeMount;想在首次渲染后操作 DOM,用 onMounted。
不能在条件语句中调用:必须在 setup 的同步顶层执行,否则 Vue 无法正确注册钩子。
tlwdr7650路由器没有wps按钮(tlwdr7650路由器没有wps按钮怎么办)
tlwdr7632扩展器电脑怎么设置(tlwdr7632扩展器电脑设置方法)
tlwda6332re安装教程(tlwda6332re如何安装)
tlwdr7632扩展器手机怎么设置(tlwdr7632扩展器手机设置方法)
tlxdr3010怎么设置网速快(tlxdr3010网速快设置方法)
tlwdr5620易展版怎么克隆(tlwdr5620易展版克隆方法)