有一个组件A,包含了组件B,组件B包含了组件C,那么组件A就是父组件,组件B就是子组件,组件C就是孙组件。
$attrs可以把父组件的值传给孙组件
1.在引用的子组件里绑定要传的值
<template>
<div id="app">
<HelloWorld :test="hello"/>
</div>
</template>
2.在引用的孙组件里用v-bind绑定$attrs
<child v-bind="$attrs"></child>
3.在孙组件里打印出this.$attrs,可以获取到父组件的数据
mounted(){
console.log(this.$attrs.test);
this.cdata = this.$attrs.test
}
完整例子:
App.vue 父组件
<template>
<div id="app">
<HelloWorld :test="hello"/>
</div>
</template>
<script>
import HelloWorld from './components/HelloWorld'
export default {
name: 'App',
components: {
HelloWorld
},
data(){
return {
hello:"hello"
}
},
}
</script>
HelloWorld.vue子组件
<template>
<div>
<child v-bind="$attrs"></child>
</div>
</template>
<script>
import Child from '../components/Child'
export default {
name: "HelloWorld",
components:{
Child
},
data () {
return {
};
}
}
</script>
Child.vue 孙组件
<template>
<div>
{{cdata}}
</div>
</template>
<script>
export default {
name: "Child",
data () {
return {
cdata:"孙组件"
};
},
mounted(){
console.log(this.$attrs.test);
this.cdata = this.$attrs.test
}
}
</script>