- vue2.0中,子组件中不能修改父组件的状态,否则在控制台中会报错。
- 比如,父组件传给子组件一个变量,子组件只能接收这个值,不能修改这个值,修改会报错。想要修改,只能赋值给另一个data中定义的变量
- 但是,这仅限于props为非数组及对象等引用类型数据,譬如字符串,数字等
- 如果props是对象的话,在子组件内修改props的话,父组件是不会报错的,父组件的值也会跟着改变
父组件传递给子组件一个对象,子组件将这个对象改了值,那么父组件中的值相应改变
为对象添加属性的时候,最好用这种方式增加,而不是直接点加,this.$set(this.food,'count',1)
例如:
//父组件
<template>
<div class="hello">
<div>{{obj.a}}</div>
<child :obj="obj"></child>
</div>
</template>
<script>
import Child from './child'
export default {
name: 'Parent',
components:{
Child
},
data () {
return {
obj: {
a: 111111
}
}
}
}
</script>
//子组件
<template>
<div id="child">
<button @click="changeObj">修改obj的属性值</button>
{{obj}}
</div>
</template>
<script>
export default {
props:{
obj:{
type: Object,
defalut:{
a: 111
}
}
},
methods:{
changeObj(){
this.$set(this.obj,'a','2222222')
}
}
}
</script>