vue3中的watchPostEffect在DOM 更新后的副作用处理方案

 更新时间:2025年12月31日 11:57:14   作者:新节  
文章介绍了Vue 3中watchPostEffect的使用方法和特性,watchPostEffect在响应式数据变化后,DOM更新完成后执行回调,适用于需要在DOM更新后执行副作用操作的场景,如DOM操作、第三方库交互等,感兴趣的朋友跟随小编一起看看吧

watchPostEffectDOM 更新完成后watchEffect

1.watchPostEffect的基本用法

<template>
  <div>
    <h1>{{ count }}</h1>
    <button @click="updateCount">修改 count</button> <br />
  </div>
</template>
<script setup lang="ts">
import { ref, watchPostEffect, watchEffect } from "vue";
const count = ref(0);
// 执行比watchPostEffect要早,因为它是在 DOM 更新之前执行的
watchEffect(() => {
  console.log(`watchEffect - ${count.value}`);
});
// 执行比watchEffect要晚,因为它是在 DOM 更新之后执行的
watchPostEffect(() => {
  console.log(`watchPostEffect - DOM 已更新,当前 count 值为: ${count.value}`);
});
function updateCount() {
  count.value++; // 数据变化,视图更新后,watchPostEffect 执行
}
</script>

在这个例子中:

  • watchPostEffect 会在 count 改变之后,视图更新完成后执行回调,打印出最新的 count 值。执行时机始终是比 watchEffect 要晚的。

如图所示:

2.watchPostEffect与watchEffect的对比

特性watchEffectwatchPostEffect
执行时机在响应式数据变化后,立即执行回调函数在响应式数据变化后,DOM 更新完成后执行回调
适用场景当你希望在数据变化后立刻执行副作用当你希望在 DOM 更新后执行副作用,如操作 DOM 或调用第三方库
常见用途计算值、触发数据相关的副作用DOM 操作、与非 Vue 的库交互、做布局等操作

3. 使用场景

watchPostEffect 主要用于那些需要在 DOM 更新之后 执行的副作用操作。这包括但不限于:

  • DOM 操作:例如,调整元素的位置、大小、或者在更新后执行的动画。
  • 第三方库:如果你在 Vue 中使用了第三方库(例如图表库、地图插件等),而这些库需要等到 Vue 完成 DOM 更新后再进行渲染或者更新。
  • 性能优化:确保某些操作仅在 DOM 更新后才执行,避免不必要的更新操作。

到此这篇关于vue3 - watchPostEffect在DOM 更新后的副作用处理的文章就介绍到这了,更多相关vue watchPostEffec 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析vue中$nextTick的作用与原理

    浅析vue中$nextTick的作用与原理

    这篇文章主要为大家详细介绍一下Vue中$nextTick的作用于原理,这也是面试中常常考到的问题,文中的示例代码讲解详细,对我们深入了解Vue有一定的帮助,需要的小伙伴可以参考一下
    2023-10-10
  • 在vue中如何引入外部less文件

    在vue中如何引入外部less文件

    这篇文章主要介绍了在vue中如何引入外部less文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Vue多页面配置打包性能优化方式(解决加载包太大加载慢问题)

    Vue多页面配置打包性能优化方式(解决加载包太大加载慢问题)

    这篇文章主要介绍了Vue多页面配置打包性能优化方式(解决加载包太大加载慢问题),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • VueJs 搭建Axios接口请求工具

    VueJs 搭建Axios接口请求工具

    axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端。今天我们来介绍VueJs 搭建Axios接口请求工具,需要的朋友参考下本文吧
    2017-11-11
  • elementPlus表格二次封装过程

    elementPlus表格二次封装过程

    我们正常在开发项目中,表格的风格是一致的,但是表格或多或少会有些不同,有些是需要分页,有些是按钮功能不同,有些又需要加Tag,或者对时间进行格式化等,这篇文章主要介绍了elementPlus表格二次封装过程,需要的朋友可以参考下
    2024-07-07
  • vue2笔记 — vue-router路由懒加载的实现

    vue2笔记 — vue-router路由懒加载的实现

    本篇文章主要介绍了vue2笔记 — vue-router路由懒加载示例,实例分析了vue-router路由懒加载的实现,具有一定参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • Vuex中如何getters动态获取state的值

    Vuex中如何getters动态获取state的值

    这篇文章主要介绍了Vuex中如何getters动态获取state的值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Vue 项目部署在子目录下时hash vs history 的真实区别解析

    Vue 项目部署在子目录下时hash vs history 的真实区别解析

    Vue子目录部署中,hash模式稳定且无需后端配合,而history模式需要后端支持否则容易出问题,子目录部署下,hash模式天生安全且页面刷新不会404,而history模式需要正确配置Nginx才能正常工作,本文给大家介绍Vue部署在子目录下时hash vs history区别,感兴趣的朋友一起看看吧
    2026-01-01
  • 基于Vue开发一个很火的卡片动画效果

    基于Vue开发一个很火的卡片动画效果

    这篇文章主要为大家详细介绍了如何基于Vue开发一个很火的卡片动画效果,大致包含两个效果,光的跟随效果还有卡片倾斜像 3D 的效果,感兴趣的可以了解一下
    2024-02-02
  • Vue3 Composition API使用及说明

    Vue3 Composition API使用及说明

    文章详细介绍了Vue3的Composition API,包括setup配置、响应式进阶、生命周期、自定义Hook、toRef与toRefs的使用,以及Vue3新组件如Fragment、Teleport和Suspense,对比了Vue2和Vue3的生命周期
    2025-10-10

最新评论