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

导航网站搭建wordpress删除月份归档

导航网站搭建,wordpress删除月份归档,冠县做网站,无极网站建设质量在Vue3中,监听对象数组中某个属性的变化可以通过以下几种方法实现: 方法一:深度监听整个数组并比较属性变化 使用 watch 函数并启用 deep: true,在回调中遍历比较新旧数组的特定属性。 javascript 复制 下载 import { ref, …

在Vue3中,监听对象数组中某个属性的变化可以通过以下几种方法实现:

方法一:深度监听整个数组并比较属性变化

使用 watch 函数并启用 deep: true,在回调中遍历比较新旧数组的特定属性。

javascript

复制

下载

import { ref, watch } from 'vue';const items = ref([{ id: 1, name: 'A' },{ id: 2, name: 'B' }
]);watch(() => [...items.value], // 创建数组副本确保触发响应(newItems, oldItems) => {newItems.forEach((newItem, index) => {const oldItem = oldItems[index];if (oldItem && newItem.name !== oldItem.name) {console.log(`Item ${newItem.id}的name变化: ${oldItem.name} => ${newItem.name}`);}});},{ deep: true }
);

优点:简单易用,无需动态管理监听器。
缺点:任何数组或元素属性变化都会触发回调,需手动比较属性,可能影响性能。


方法二:为每个元素单独设置监听器

遍历数组并为每个对象的属性设置独立的 watch,动态管理监听器的生命周期。

javascript

复制

下载

import { ref, watch, onBeforeUnmount } from 'vue';const items = ref([{ id: 1, name: 'A' },{ id: 2, name: 'B' }
]);const stops = new Map(); // 使用Map保存监听器的停止函数// 初始化监听
const setupWatchers = () => {items.value.forEach(item => {if (!stops.has(item.id)) {const stop = watch(() => item.name,(newVal, oldVal) => {console.log(`Item ${item.id}的name变化: ${oldVal} => ${newVal}`);});stops.set(item.id, stop);}});
};// 监听数组变化,动态更新监听器
watch(() => [...items.value], // 触发数组变化(newItems, oldItems) => {// 移除已删除元素的监听oldItems.forEach(oldItem => {if (!newItems.some(item => item.id === oldItem.id)) {const stop = stops.get(oldItem.id);if (stop) {stop();stops.delete(oldItem.id);}}});// 添加新元素的监听newItems.forEach(newItem => {if (!stops.has(newItem.id)) {const stop = watch(() => newItem.name,(newVal, oldVal) => {console.log(`Item ${newItem.id}的name变化: ${oldVal} => ${newVal}`);});stops.set(newItem.id, stop);}});},{ deep: true, immediate: true }
);// 组件卸载时清理所有监听
onBeforeUnmount(() => {stops.forEach(stop => stop());stops.clear();
});

优点:精确监听目标属性,避免不必要的回调。
缺点:需手动管理监听器,逻辑较复杂。


方法三:提取属性数组并监听变化

使用 computed 提取所有目标属性,监听该数组的变化。

javascript

复制

下载

import { ref, watch, computed } from 'vue';const items = ref([{ id: 1, name: 'A' },{ id: 2, name: 'B' }
]);const names = computed(() => items.value.map(item => item.name));watch(names, (newNames, oldNames) => {newNames.forEach((newName, index) => {const oldName = oldNames[index];if (oldName !== undefined && newName !== oldName) {console.log(`索引${index}的name变化: ${oldName} => ${newName}`);}});
});

优点:仅关注特定属性,减少比较范围。
缺点:无法直接关联到原对象,需通过索引处理。

// 提取金额数组
const totalArray = computed(() => ckDetail.value.map((item) => item.total));
// 监听金额数组
watch(() => totalArray.value,() => {// 累计出库明细金额,得到出库总额ckMaster.value.total = totalArray.value.reduce((pre, cur) => pre + Number(formatToRMB(cur)), 0);}
);

总结

  • 推荐方法一:适用于数组较小或变化不频繁的场景,简单快捷。

  • 推荐方法二:适用于大型数组或需要精确控制的场景,但需处理动态监听。

  • 方法三:适用于只需知道属性变化的位置,不关心具体对象的场景。

http://www.dtcms.com/a/612458.html

相关文章:

  • 网站建设服务都包含网站含义
  • 网站建设 服务内容 费用门户网站做啥
  • 网站建设谈单流程wordpress 回复显示
  • 泰州免费网站建站模板中铁建设集团有限公司董事长
  • 门户网站开发简历网站点击弹出下载框 怎么做的
  • 减少网站跳出率国外做论坛网站
  • 济源专业网站建设(制作网站)wordpress橙色主题
  • 网站模板去哪下载seo的基本工作内容
  • 成都学校网站建设企业网上商城怎么购物
  • 连江网站建设做标书分享网站
  • seo搜索引擎优化网站idc机房建设
  • 自己做的网站如何用手机去查看瑞安网站建设优化推广
  • 企业手机网站建设渠道企业邮箱网易
  • 关于咖啡厅网站建设的论文施工企业管理费用包括哪些
  • 杭州市城市建设学校网站让别人做一个网站需要多少钱
  • 网站公司企业网站网站获取访问者qq号码
  • 网站建设鸿儒asp装饰公司网站源码
  • 深圳罗湖网站制作数据分析师前景
  • 网站维护与优化教程上海天华建筑设计有限公司怎么样
  • 网站建设公司与前端哪个网站可以在线做高考题
  • 通过wordpress建站济南建网站市场
  • 网站提示风险360搜索建站公司
  • 网站备案链接女子医院网站开发策略
  • 晋中建设机械网站企业邮箱登录入口首页
  • 假视频网站源码出售旅游网站排名前5位的
  • 一键生成网站的软件菏泽网站备案拍照
  • 东莞注塑切水口东莞网站建设手机怎么制作钓鱼网站
  • 宁波做网站 主觉文化seo网站建设 刘贺稳营销专家a
  • 建设银行培训网站阳新县建设局网站
  • 网站建设列表横向女孩子做室内设计累吗