最近在看elementui table组件的源码,发现
watch: {
data: {
immediate: true,
handler(value) {
this.store.commit('setData', value);
}
}
}
data不是数组类型吗,不加deep: true可以监听到内部数据的变化吗?
最近在看elementui table组件的源码,发现
watch: {
data: {
immediate: true,
handler(value) {
this.store.commit('setData', value);
}
}
}
data不是数组类型吗,不加deep: true可以监听到内部数据的变化吗?
如果数组成员是对象,比如[{test: '22'}]
,想要监听到变量test的变化,需要加 deep: true。如果数组成员是普通数据类型,比如[1, 4, 5]
,想要监听此时数据的变化就不需要加 deep: true
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答4.9k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
不加deep: true不能监听到内部数据的变化,但是这和他是不是数组无关,object类型的数据不开启deep同样也监听不到内部数据的变化。
watch中开启deep只是告诉数据,内部数据发生变化的时候,通知这一Watcher,而监听内部数据的可能不止这一个Watcher,比如用于渲染页面的属性,会收集渲染Watcher等,等到属性变化,会触发渲染Watcher,改变页面。