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

vue3中watch 函数参数说明

source:这是要监听的数据源,可以是一个 getter 函数、一个 ref 对象、一个 reactive 对象或者一个包含多个数据源的数组。在子组件示例中,() => props.parentValue 就是一个 getter 函数,它返回 props.parentValue 的值,作为 watch 要监听的数据源。
cb:即回调函数,当 source 的值发生变化时会被调用。这个回调函数接收两个参数,分别是新值 newVal 和旧值 oldVal。在子组件示例中,(newVal, oldVal) => { console.log(\值从 ${oldVal} 变为 ${newVal}`); }` 就是这个回调函数。
options:是一个可选的配置对象,可用于设置一些额外的选项,比如 immediate(是否在初始化时立即执行回调)、deep(是否进行深度监听)等。在子组件示例中,{ immediate: false } 就是配置对象,这里设置 immediate 为 false,表示初始化时不立即执行回调。

父组件parent.vue

<template>
  <div>
    <button @click="updateValue">更新值</button>
    <!-- 传递初始值为 null 的 ref 变量给子组件 -->
    <Child :parentValue="parentData" />
  </div>
</template>

<script setup>
import { ref } from 'vue';
import Child from './Child.vue';

// 初始化 ref 变量为 null
const parentData = ref(null);

// 更新 ref 变量的值
const updateValue = () => {
  parentData.value = '新的值';
};
</script>

子组件 Child.vue

<template>
  <div>接收到的值: {{ parentValue }}</div>
</template>

<script setup>
import { defineProps, watch } from 'vue';

// 声明接收的 props
const props = defineProps({
  parentValue: {
    type: null, // 可以接收任意类型
    default: null
  }
});

// 监听 parentValue 的变化
watch(
  // source:要监听的数据源,这里是一个 getter 函数
  () => props.parentValue, 
  // cb:回调函数,当值变化时执行
  (newVal, oldVal) => {
    console.log(`值从 ${oldVal} 变为 ${newVal}`);
  }, 
  // options:配置对象,设置初始化时不立即执行回调
  {
    immediate: false 
  }
);
</script>

在这个示例中,watch 函数的使用严格遵循了 watch(source, cb, options) 的形式。

相关文章:

  • db_join连接语句
  • Ubuntu 22.04 安装向日葵远程控制
  • 电路租用和专线
  • [Linux]从零开始的STM32MP157 Linux内核移植
  • 只出现一次的数字
  • 为AI聊天工具添加一个知识系统 之150 设计重审 之15 完整方案及评估 之3
  • 【mybatis使用小知识合集持续更新】
  • 283.移动零解题记录
  • 深入解析 MyBatis-Plus 批量操作:原理、实现与性能优化
  • Matplotlib.day16
  • Nextjs15 - 什么是CSR、SSR、SSG和ISR
  • centos 7 搭建ftp 基于虚拟用户用shell脚本搭建
  • k8s存储介绍(六)StorangeClass
  • Redis :command not allowed when used memory
  • a, b = map(int, input().split()) 从用户输入中读取两个整数
  • 耘想Docker LinNAS,颠覆传统存储体验!
  • muduo库的思路梳理
  • 前端使用WPS WebOffice 做在线文档预览与编辑
  • Redux,React-redux。基础
  • 【脏读、不可重复读、幻读区别】
  • 三大股份制银行入局AIC,一级市场再迎“活水”
  • 技术派|巴基斯坦导弹:让印度保持克制的“定海神针”?
  • 5.19中国旅游日,上海56家景区景点限时门票半价
  • 让“五颜六色”面孔讲述上海故事,2025年上海城市推荐官开启选拔
  • 习近平会见缅甸领导人敏昂莱
  • 招行:拟出资150亿元全资发起设立金融资产投资公司