关于vue watch的一个问题

需要监听一个vuex的数据,大概长这样

a: {
    a1: {
        a11: {}
    },
   a2: {
        a11: {}
    },
   a3: {
        a11: {}
    },
}
watch: {
    // 这个地方我可能要监听 `a.a1.a11 `
    // 也可能要监听 `a.a2.a11`
    // 最难的是可能还要监听 `a.a2.b`   这个b属性是其他地方新增的
}

请问我应该怎么来监听呢?

deep: true 对于页面创建的时候还没有的数据是不生效的,而我需要监听的数据是在其他逻辑里新增的属性

阅读 2.2k
4 个回答

先用computed拿到,再监听。
computed:{

a3(){
    return this.$store.state.XXXXX
}

},
watch:{

a3(n){
    XXXXX
}

}

新增对象用$set,或者a.a2=Object.assign({b:..},a.a2)

watch: {

'a.a1.a11'(){

}

}
直接写,vue每次都越来越灵活!

在别的逻辑里新增的属性是监听不到的。
但是正常情况下 你修改state都是在Mutation中进行的话。通过计算属性将对应的值取过来再watch应该是可以的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题