cccyb/vue-eleme-app

vue2.0不允许子组件修改父组件传进来的值

Closed this issue · 3 comments

请问在ratingselect.vue中的这种写法是否会报错?

select(type, event) {
        if (!event._constructed) {
          return;
        }
        this.$emit('select', type);
      },
      toggleContent(event) {
        if (!event._constructed) {
          return;
        }
        this.$emit('toggle');
      }

food.vue中修改:

 this.selectType = type;
this.onlyContent = !this.onlyContent;
cccyb commented

不会报错的,这是正常的父子组件通信,子组件并没有直接修改父组件的值,而是通过自定义事件。具体就是在子组件中使用$emit(eventName)触发事件,然后再父组件中使用$on(eventName) 监听事件,然后在父组件中在监听到子组件触发的事件后,在父组件内修改值。
具体可以参考vue官方文档自定义事件一章节

您的意思是子组件只是通知父组件修改这个值,修改的过程在父组件内定义?子组件内并没有修改真实数据?

cccyb commented

对的,参照文档里的单向数据流,里面说了。