vue3 watch ref
时间: 2025-05-25 16:09:16 浏览: 17
### 如何在 Vue3 中使用 `watch` 监听 `ref` 的变化
在 Vue3 中,`watch` 是一个强大的工具,用于监听响应式数据的变化并执行相应的回调函数。当需要监听由 `ref` 创建的响应式变量时,可以直接将该 `ref` 对象传递给 `watch` 方法的第一参数。
以下是详细的实现方式以及代码示例:
#### 实现方法
1. **引入必要的 API**
需要在脚本部分导入 `ref` 和 `watch` 两个核心功能模块。
2. **定义响应式数据**
使用 `ref` 创建一个初始值为某个类型的响应式引用对象。例如,创建一个数值型的响应式变量。
3. **设置监听器**
调用 `watch` 并传入目标 `ref` 对象及其对应的回调函数,在回调中处理新旧值的变化逻辑。
4. **模板绑定交互**
将此响应式数据与页面上的输入框或其他动态元素关联起来,以便实时触发更新事件。
#### 示例代码
下面展示了一个完整的例子,演示如何利用 `watch` 来监控 `ref` 类型的数据变动情况:
```html
<template>
<div>
<!-- 绑定 input 输入框 -->
<input v-model="countRef" type="number" />
<p>当前计数: {{ countRef }}</p>
</div>
</template>
<script setup>
import { ref, watch } from 'vue';
// 定义一个基于 ref 的响应式整数
const countRef = ref(0);
// 设置 watcher 来观察 countRef 的改变
watch(
countRef,
(newValue, oldValue) => {
console.log(`计数从 ${oldValue} 变为 ${newValue}`);
}
);
</script>
```
在此实例中,每当用户调整 `<input>` 元素中的数字时,都会自动调用我们设定好的日志记录语句[^2]。
#### 进一步说明
需要注意的是,虽然上面的例子只涉及单一 `ref` 值的监测,但在更复杂的应用场景下也可以扩展至同时跟踪多个不同来源的状态变更。比如可以通过数组形式指定一系列依赖项供统一管理[^3]。
另外值得注意的一点在于性能优化方面——如果某些特定条件下才希望激活这种监视机制,则可通过配置选项如 `{ immediate: true }` 或者深度嵌套结构检测 (`{ deep: true }`) 来满足需求[^3]。
---
###
阅读全文
相关推荐


















