vue 中在父组件中用for循环里循环更新一个对象,在子组件中却监听不到这个对象的变化,该怎么处理

现在好像是在for循环中修改对象的属性值,但是好像监听不到变化,只有把defaultData 初始为空才可以监听到。

// 父组件中触发值改变的地方
changeNext(selected = {}, toArea, field){
    for(const key in field.nextFields){
      nextFields.forEach((nextField)=>{
        const {toArea, toField} = nextField;
        this.$set(this.defaultData[toArea], toField, selected[key]);
      })
    }
}
// 子组件中
props: {
   defaultData: {
     type: Object,
   }
},
watch: {
    defaultData: {
      handler: function (val, oldVal) {
        console.log('new c: %s, old: %s', val, oldVal)
      },
      deep: true
    },
}
阅读 2.7k
1 个回答

deep: true 放的位置不对把
以下方式试一下: 或者使用$emit $on实现更改 immediate 足够了
image.png

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