Vue 中 watch 不会触发的情况

Vue 中的watch主要用于监听 data 值,并执行一些自定义操作。

若监听的 data 发生变化,则执行这些操作,反之则不执行。

问题来了

当watch监听一个data,arr

当arr从[1]变为[],watch事件触发,当arr从[]变为[],watch不会出发

因为 [] === [],为false

所以觉得这边很奇怪

请明白其中原因的大佬解释一下为何会发生这种原因。

不胜感激

阅读 8.6k
2 个回答

[] == [] 当两个值都是对象 (引用值) 时, 比较的是两个引用值在内存中是否是同一个对象. 因为此 [] 非彼 [], 虽然同为空数组, 确是两个互不相关的空数组, 自然 == 为 false.

性能优化,如果数据没发生变化也要执行你在watch中的逻辑,这样框架设计明显不合理。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题