在写页面逻辑的时候出现这样一个情况
子组件获取父组件的props值,并直接修改
控制台报错
这是因为vue为了避免子组件修改数据污染父组件而采取的措施

于是我把props值赋值给子组件的一个state

 props: {
    checkednames: {
      type: Array,
      default: []
    }
  },
  data() {
    return {
      mycheckedNames: this.checkednames
    };
  },

发现state值自从获取了第一次的props值之后再也没有改变过

clipboard.png
即子组件收到了父组件传过来的props值,但并没有更新到state

原因在于:没有使用深度监听监听对象

解决方案:
如果要修改props传入的值,用watch可以多次修改,watch监听对象得用深度监听

  watch:{
    checkednames(val){
      this.mycheckedNames = val
    }
  }

我们发现state可以根据父组件传过来的props值实时更新了

clipboard.png


无锡肖奈
186 声望7 粉丝

十八线野生程序猿 前端开发