1.首先先说js的数据类型
分为两种:基本数据类型和引用数据类型
对于基本数据类型的观测可以使用watch,或者computed计算数据
然而引用数据类型 数组或者对象 需要深度监听
watch: {
arr: {
immediate: true,
handler(val) {
。。。
}
}
},
2.我们在项目中会遇到数据改变了但视图没有发生变化,例如使用computed
这是什么原因呢?
原因在Object.defineproperty()方法在操作数据和对象不会触发set方法所以视图不会更新
受现代 JavaScript 的限制 (以及废弃 Object.observe),Vue 不能检测到对象属性的添加或删除。
解决方法:1.this.$set(obj,‘b’,2)=》针对于对象
2.生成一个新的数组在使用数组的变异方法如push,splice,等,因为数组的变异方法,也不会触发set所以会出现视图不更新
博客主要介绍了JS的数据类型,包括基本数据类型和引用数据类型,基本数据类型可用watch或computed观测,引用数据类型需深度监听。还指出项目中数据改变但视图未更新的问题,原因是Object.defineproperty()操作不触发set方法,给出了针对对象和数组的解决办法。
1298

被折叠的 条评论
为什么被折叠?



