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

Vue 3 ref(new Map()) 无法触发watch

现象

const map = ref(new Map());

通过 map.value.set(k, v); 不能触发watch

下面验证,map.value.set 并不能触发watch 的监听

代码

<script setup lang="ts">
import { ref, triggerRef, watch } from 'vue';

const map = ref(new Map<string, Record<string, any>>());
watch(map, () => {
  console.log('map change', map.value);
});


function updateMap() {
  map.value.set('1', { name: '1' });
}
</script>
<template>
  <div>
    <button @click="updateMap">updateMap</button>
  </div>
</template>

怎么解决

使用reactive

const map = reactive(new Map())

watch deep

watch(xx,xx, {deep:true})

重新赋值

只有重新给map的ref赋值才能正常触发响应式。

map.value = new Map(map.value)

但是,如果map中数据量非常大的话,不知道这样的map的复制会不会消耗非常多的性能。

记录一下现象,防止被坑。

如果大家有不同的解决办法,欢迎提出交流。

相关文章:

  • 力扣35.搜索插入位置-二分查找
  • Linux网络配置(超详细)
  • 「Java EE开发指南」如何用MyEclipse构建一个Web项目?(二)
  • Go权限管理库Casbin和身份验证库jwt-go初试
  • 【2025】Electron + React 架构筑基——从零到一的跨平台开发
  • 电子学会—2024年12月青少年软件编程(图形化)四级等级考试真题——趣味点阵屏
  • 当中国“智算心跳”与全球共振:九章云极DataCanvas首秀MWC 2025
  • 快速掌握EasyOCR应用实战指南
  • Qt常用控件之表格QTableWidget
  • openharmony 软总线-设备发现流程
  • OSPF网络类型:NBMA与P2MP
  • K8s 1.27.1 实战系列(七)Deployment
  • 第八节:基于Winform框架的串口助手小项目---完结优化《C#编程》
  • HTML 属性(详细易懂)
  • Manus全球首个通用Agent,Manus AI:Agent应用的ChatGPT时刻
  • Wpf-ReactiveUI-Usercontrol与主界面交互
  • 大语言模型学习--向量数据库基础知识
  • 本地运行Manus的替代方案:OpenManus的技术解析与实践指南
  • 【入门级篇】Dify安装+DeepSeek模型配置保姆级教程
  • 避免魔法值和多层if的关键:编程范式和设计模式
  • 重庆网站建设哪家专业/网店运营是做什么的
  • 做新媒体广告的网站/口碑好的设计培训机构
  • 厦门网页制作厦门小程序app/seo管理工具
  • 怎样销售网站/seo关键词外包
  • 程序员做图网站/百度基木鱼建站
  • 郑州网站建设 天强科技/免费网站搭建