console
Vue.component('level-one-component',{
template: `<div><slot></slot></div>`,
data(){
return {
msg: "msg"
}
},
provide(){
return {
title: "level-one-component title",
}
},
});
Vue.component('level-two-component',{
template: `<div><slot></slot></div>`,
});
Vue.component('level-three-component',{
template: `<div>{{ title2 }}<slot></slot></div>`,
inject: {
title2: {
default: "level-three-component title"
}
}
});
Vue.component('level-four-component',{
template: `<div>{{ title }}<slot></slot></div>`,
provide(){
console.log("provide",this.msg,this.title);
return {
title: "level-four-component title",
}
},
inject: {
title: {
default: "level-four-component"
}
},
beforeCreate(){
console.log("beforeCreate");
},
created(){
console.log("created");
}
});
Vue.component('level-five-component',{
template: `<div>{{ title }}<slot></slot></div>`,
inject: ['title']
});
new Vue({
el: '#root',
})
<script src="https://unpkg.com/vue"></script>
<div id="root">
<level-one-component>
<level-two-component>
<level-three-component>
<level-four-component>
<level-five-component>
</level-five-component>
</level-four-component>
</level-three-component>
</level-two-component>
</level-one-component>
</div>