- watch一个object类型的变量时,如下面例子的a.b
a={
b: {
b1: 1,
b2: 2
}
}
@Watch('a.b', { deep: true })
async onValueChange(newVal, oldVal) {
// a.b.b1 值改变时
// newVal.b1 === oldVal.b1 是意料之外的true,因为object的js特性,引用变了,oldVal已经更新
}
解决:
get a_b() {
// to confirm the oldValue is indeed old value
return Object.assign({}, this.a.b)
}
async onValueChange(newVal, oldVal) {
// newVal.b1 === oldVal.b1 可以正常判定
}