首页 > 其他分享 >vue3 watch使用方式,如何监听reactive子属性 ref数据等

vue3 watch使用方式,如何监听reactive子属性 ref数据等

时间:2024-07-08 21:53:18浏览次数:9  
标签:val ref watch reactive vue3 data1 监听

代码

<template>
  <div class="box">childB</div>
</template>
<script lang="ts" setup>
import { reactive, watch, ref } from "vue";

const data1 = reactive({
  msg: "childB",
  abc: "sldfkjslfd",
  ddd: 1,
});
//监听reactive 数据方式1
watch(
  data1,
  (val) => {
    console.log("data1_change", val);
  },
  {
    immediate: true, //加载组件就会触发监听
  }
);
// 监听reactive 数据方式2,监听子属性,多个子属性
watch(
  () => [data1.ddd, data1.msg],
  (val: Array<any>) => {
    console.log("data1_ddd_change", val);
  },
  {
    deep: true,
  }
);
/**
 * 总之第一个参数需要为object类型才行,不能直接reactive子属性直接监听,需要利用数组或者函数转化来监听
 */
// 监听reactive 数据方式3,监听多个属性
watch(
  [() => data1.ddd, () => data1.msg],
  (val: Array<any>) => {
    console.log("监听reactive多个属性:", val);
  },
  {
    deep: true,
  }
);

setTimeout(() => {
  data1.ddd = 3;
  setTimeout(() => {
    data1.msg = "msg_change";
  }, 2000);
}, 2000);

const ref1 = ref("ttt");
const ref2 = ref(333);

// 监听ref数据方式1
watch(
  ref1,
  (val) => {
    console.log("ref1_change", val);
  },
  {
    immediate: true, //加载组件就会触发监听
  }
);
// 监听ref数据方式2,监听多个ref
watch(
  [ref1, ref2],
  (val: Array<any>) => {
    console.log("监听ref多个属性:", val);
  },
  {
    deep: true,
  }
);

setTimeout(() => {
  ref1.value = "ttt2";
  setTimeout(() => {
    ref2.value = 3333;
  }, 2000);
}, 2000);
</script>
<style lang="stylus" scoped></style>

标签:val,ref,watch,reactive,vue3,data1,监听
From: https://www.cnblogs.com/jocongmin/p/18290743

相关文章

  • vue3 defineEmits 使用
    概论defineEmits用来定义子组件暴漏给父组件的自定义事件测试代码子组件<template><divclass="box">child</div></template><scriptlang="ts"setup>interfaceEmit{(e:"emitfn1",data:Array<number>):void;......
  • vk-data-goods-sku-popup uniapp vue3示例
    效果图组件简介vk-data-goods-sku-popup是一个uniapp上面方便好用的sku组件,使用场景包括但不限于商品详情页、购物车页面、订单结算页、搜索结果页下面就上代码了,完整vue页面的代码如下<scriptsetup>import{ref,defineEmits,defineProps,computed}from'vue'//显示......
  • 前端面试题28(Vue3的Teleport功能在什么场景下特别有用?能给个例子吗?)
    Vue3的Teleport功能在需要将组件的渲染结果放置在DOM树中与当前组件位置无关的任意位置时特别有用。这通常涉及到需要将某些UI元素(如模态框、弹出菜单、通知、工具提示等)从其逻辑上的父级组件中“提取”出来,放置到页面的更高层级或完全不同的位置,以避免样式冲突或层......
  • 前端面试题27(在实际项目中,如何有效地利用Vue3的响应式系统提高性能?)
    在实际项目中,有效利用Vue3的响应式系统提高性能主要涉及以下几个关键点:1.合理使用reactive和refreactive:用于将复杂的数据结构(如对象或数组)转换成响应式版本。确保只将需要实时更新的数据结构声明为响应式,避免不必要的全局响应化,以减少性能开销。ref:用于创建基本类型......
  • tauri + vue3 如何实现在一个页面上局部加载外部网页?
    ......
  • Vue3中drawer组件无法重新回显数据
    不做drawer的时候数据是可以正常回显的,点击详情id是正常传值的,但是使用了drawer组件以后发现只会调用一次详情功能,以后不管点击哪条信息都不会刷新信息永远都是第一条的信息,但是id刷新成功了,后来发现是没有加v-if来判断drawer的打开值,如果您有一样的问题可以参考以下代码......
  • 从 0 实现一个 vue3 的权限指令 v-permission
    在开发过程中会经常遇到一些权限控制,比如路由的权限控制、按钮的权限控制......
  • vue3管理系统常用代码总结
    管理系统常用基本模块,可满足大部分管理系统的基础模块需求。技术选型vue3+typescript1.登录功能//登录construleFormRef=ref<FormInstance>();constrouter=useRouter()//-->$routerconstsubmitForm=(formEl:FormInstance|undefi......
  • 新知识get,vue3是如何实现在style中使用响应式变量?
    前言vue2的时候想必大家有遇到需要在style模块中访问script模块中的响应式变量,为此我们不得不使用css变量去实现。现在vue3已经内置了这个功能啦,可以在style中使用v-bind指令绑定script模块中的响应式变量,这篇文章我们来讲讲vue是如何实现在style中使用script模块中的响应式变量......
  • 基于springboot + vue3 +遗传算法的智能组卷在线考试系统的设计与开发
    目录一、项目介绍1、项目简介 二、项目实现1、数据库设计E-R图2、数据库级联思路3、SpringSecurity的认证思路......