Skip to content

给对象添加新属性,界面不刷新怎么办?

Vue3

首先,Vue3用的是Proxy去实现数据响应式,所以动态添加属性的话也是可以的,这个问题只在Vue2中出现。

Vue2

出现这个问题的原因是Vue2用的Object.defineProperty去实现数据的响应式,当对象新增一个属性时,无法触发事件拦截,自然就无法将新增的属性设置成响应式数据

解决方案:

  • Vue.set(),Vue.set的实现其实就是通过Object.defineProperty对新增的属性进行拦截,少量属性。
  • Object.assign,合并原对象重新赋值,大量属性
  • $forceUpdate,强制更新视图,不太建议使用