我有一个Vue组件,其中有一个名为product
的prop,它是一个带有许多属性的对象,并且经常发生更改。
export default {
props: {
product: {
type: Object,
default: () => {},
},
},
watch: {
'product.p1'() {
this.loadData()
},
'product.p2'() {
this.loadData()
},
},
methods: {
loadData() {
doApiRequest(this.product.p1, this.product.p2)
}
},
}
当且仅当product
的属性p1
和p2
发生变化时,该组件应加载新数据。
其中一种方法是监视整个product
并在其发生更改时加载数据。但这会产生不必要的请求,因为p1
和p2
可能没有更改。
另一个想法是监视product.p1
和product.p2
,并在每个监视器中调用相同的函数来加载数据。
但是,如果在产品的新版本中同时更改了p1
和p2
,它将触发两个调用。
使用防抖函数加载数据是否是一个好的解决方案?
还是使用单个监视器监视整个product
,并将新的p1
和p2
字符串化后与它们的旧版本进行比较以确定是否应触发数据加载?