当前位置: 首页 > article >正文

Vue:watchEffect的作用与性质

目录

一.watchEffect的作用

二.watchEffect的性质

三. `watch`对比`watchEffect`

四.watchEffect的使用


在 Vue 中,watchEffect 是一个用于副作用处理的函数,它是 Vue 3 Composition API 的一部分。它的主要作用是自动追踪其内部依赖的响应式状态,并在依赖发生变化时重新执行。立即运行一个函数,同时响应式地追踪其依赖,并在依赖更改时重新执行该函数。

一.watchEffect的作用

  • 自动收集依赖watchEffect 会自动收集其内部使用的所有响应式状态,并在这些状态变化时重新执行。
  • 执行副作用:它允许你执行一些依赖于响应式状态的副作用,比如数据请求、计算或 DOM 操作。
  • 性能优化:由于 watchEffect 会智能地追踪依赖,因此它只会在其依赖发生变化时才执行,这有助于避免不必要的计算和性能损耗。

二.watchEffect的性质

  1. 自动依赖追踪:当你在 watchEffect 中访问响应式状态时,Vue 会自动将这些状态标记为依赖,并在状态变化时重新执行 watchEffect

  2. 立即执行watchEffect 在被调用时会立即执行一次,并追踪其内部依赖。

  3. 返回停止函数watchEffect 返回一个函数,该函数可以用来停止 watchEffect 的执行。调用这个返回的函数可以停止追踪依赖和执行副作用。

  4. 响应式更新:当 watchEffect 中的响应式状态发生变化时,Vue 会自动更新 DOM。

三. `watch`对比`watchEffect`

特性watchwatchEffect
依赖追踪显式指定自动追踪
执行时机惰性执行(默认)立即执行
回调函数参数接收新值和旧值不接收参数
适用场景需要精确控制监听哪些状态需要自动追踪所有依赖
停止监听返回停止函数返回停止函数

四.watchEffect的使用

<template>
  <div>
    <p>{{ message }}</p>
    <p>{{ count }}</p>
  </div>
</template>

<script>
import { ref, watchEffect } from 'vue';

export default {
  setup() {
    const message = ref('Hello');
    const count = ref(0);

    // watchEffect 将立即执行一次,并在依赖项变化时重新运行
    watchEffect(() => {
      console.log(`count is: ${count.value}`);
      // 这里可以执行一些副作用,例如更新 DOM 或发送请求
    });

    // 停止 watchEffect
    const stopWatch = watchEffect(() => {
      console.log(`count is: ${count.value}`);
    });

    // 当你想要停止监听时,可以调用这个函数
    // stopWatch();

    return {
      message,
      count
    };
  }
};
</script>


http://www.kler.cn/news/304026.html

相关文章:

  • C++库std::clamp
  • Android Studio新建工程(Java语言环境)
  • Cassandra 和 ScyllaDB
  • Matlab初等数学与线性代数
  • 如何搭建一个自己的外卖会员卡系统?
  • Qt篇——Qt使用C++获取Windows电脑上所有外接设备的名称、物理端口位置等信息
  • 【Kubernetes】(K8S)彻底卸载详细教程
  • 瑞芯微RK3566鸿蒙开发板OpenHarmony标准系统应用兼容性测试指导
  • 孟德尔随机化分析和GWAS分析有什么区别?
  • qt使用对数坐标的例子,qchart用QLogValueAxis坐标不出图解决
  • JVM内部结构解析
  • Redis 高可用
  • 9月14日,每日信息差
  • css的选择器有哪些?权重由大到小是怎么排序的?
  • 深度学习:怎么看pth文件的参数
  • 工厂方法模式和抽象工厂模式
  • 考试:软件工程(01)
  • 非网站业务怎么接入高防IP抗DDoS
  • [PICO VR眼镜]眼动追踪串流Unity开发与使用方法,眼动追踪打包报错问题解决(Eye Tracking)
  • HTML5中Checkbox标签的深入全面解析
  • 位段、枚举、联合
  • Hazel 2024
  • 24.9.14学习笔记
  • 构造函数与析构函数的执行顺序
  • 多个系统运维压力大?统一运维管理为IT轻松解忧
  • 计算机网络八股总结
  • 使用vscode上传git远程仓库流程(Gitee)
  • uniapp点击跳转到对应位置
  • 写在OceanBase开源三周年
  • [项目][WebServer][日志设计]详细讲解