前言

  我们在vue2的时候在MVVM模式下开发,有时遇到数据层级嵌套过深等原因导致数据未更新,常用的方法都是this.$forceUpdate()或者Vue.set()去更新视图层,但是在vue3+TS的开发环境下无法用vue2的解决方法处理。

 

解决方法一:

import { getCurrentInstance } from 'vue';

const instance = getCurrentInstance();
instance.proxy.$forceUpdate();

 

解决方法二:

  在数组或对象的数据未更新时,不要用ref而使用reactive,例如 const arr:interface[] = reactive([]);

原因,从原理方面:

  ref通过Object.defineProperty()的get和set实现数据代理。
  reactive使用Proxy实现数据代理,并且通过Reflect操作源对象内部的数据。

posted on 2022-10-25 15:12  Tom最好的朋友是Jerry  阅读(4053)  评论(0编辑  收藏  举报