m0_58570672 2024-01-16 10:35 采纳率: 100%
浏览 27
已结题

vue3监测数组的时候可能触发多次get/set,那么如何防止触发多次呢

看到有个答案是:我们可以判断key是否为当前被代理对象target自身属性,也可以判断旧值与新值是否相等,只有满足以上两个条件之一时,才有可能执行trigger。但是"判断key是否为当前被代理对象target自身属性"和"判断旧值与新值是否相等"不太明白

  • 写回答

2条回答 默认 最新

  • 超级小狗 2024-01-16 10:38
    关注

    为了避免触发多次回调,可以使用 watch 函数的第三个参数 options 来配置监测行为。其中, deep 选项可以控制是否进行深度观察。将 deep 设置为 false 可以避免触发多次回调,而只在整个数组替换时才触发:

    watch(
      () => myArray,
      (newValue, oldValue) => {
        // 处理数组变化
      },
      { deep: false }
    );
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月24日
  • 已采纳回答 1月16日
  • 创建了问题 1月16日

悬赏问题

  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费
  • ¥15 kafka无法正常启动(只启动了一瞬间会然后挂了)
  • ¥15 Workbench中材料库无法更新,如何解决?
  • ¥20 如何推断此服务器配置