vue2中watch监听不到的情况有哪些
时间: 2023-10-28 14:40:12 浏览: 268
一些情况下,由于Vue的响应式系统限制,watch无法监听到某些数据的变化,例如:
1. 对象属性的新增和删除
2. 数组的某些变化,如splice和数组长度变化
3. 嵌套对象和数组的变化,需要使用deep选项进行深度监听
4. 对象属性值的变化,如果只是修改属性值但是没有重新赋值给对象,watch无法监听到。
相关问题
vue2中watch监听ref
在Vue2中,可以使用`watch`选项来监听`ref`的变化。下面是一个示例代码:
```javascript
var app = new Vue({
el: '#app2',
data: {
child: {
age: 2
},
hasErr: false
},
watch: {
'child.age': function(newVal, oldVal) {
if (newVal < 3 || newVal > 6) {
this.hasErr = true;
} else {
this.hasErr = false;
}
}
}
});
```
在上面的代码中,我们定义了一个`watch`选项,它监听了`child.age`这个`ref`的变化。当`child.age`的值发生变化时,`watch`函数会被触发。在这个示例中,我们检查了`child.age`的值是否在3到6之间,如果不在这个范围内,就将`hasErr`设置为`true`,否则设置为`false`。
vue2 watch监听sessionstorage 监听不到
根据提供的代码,可能是因为watch监听的是sessionStorage对象本身,而不是sessionStorage中某个具体的key值。因此,当sessionStorage中的某个key值发生变化时,watch监听不到。解决方法是在sessionStorage中的某个key值发生变化时,手动触发一个事件,让watch监听到这个事件,从而实现监听sessionStorage中某个key值的变化。
代码实现如下:
```
// 监听sessionStorage中某个key值的变化
watch: {
'$store.state.sessionStorageKey': function (newVal, oldVal) {
console.log('sessionStorageKey changed:', newVal, oldVal)
}
},
// 手动触发事件
methods: {
setSessionStorage: function (key, val) {
sessionStorage.setItem(key, val)
this.$store.state.sessionStorageKey = key + Math.random()
}
}
```
阅读全文