vue前端开发自学,祖孙多层级组件嵌套关系数据传输!官方提供了一个解决方案,就是,在根组件内使用provide,哪个子孙组件想调用这个数据,就可以inject接收就行了。虽然是方便了,但是这个有点要求,就是只能自上而下的传递。不能反过来(不能子孙给根节点!)
<template>
<h3>组件之间,层级嵌套数据透传练习</h3>
<Parent />
</template>
<script>
import Parent from './components/Parent.vue';
export default{
components:{
Parent
},
data(){
return{
srcinfo2:"我是根节点数据"
}
},
provide(){
//使用函数的形式,可以访问到this对象
return{
srcinfo:this.srcinfo2
}
}
}
</script>
如图,根组件内,我们使用了函数的样式,调用函数样式的好处!是可以让我们访问到当前页面的动态数据。
<template>
<h3>Parent</h3>
<p>{{ msg }}</p>
<Child />
</template>
<script>
import Child from './Child.vue';
export default{
components:{
Child
},
data(){
return {
msg:this.srcinfo
}
},
inject:["srcinfo"],
}
</script>
parent.VUE组件内的代码展示。
<template>
<h3>Child</h3>
<p>{{ msg }}</p>
</template>
<script>
export default{
inject:["srcinfo"],
data(){
return {
msg:this.srcinfo
}
}
}
</script>
child.vue组件内代码展示。
下面看看实际的浏览器效果。
如图,可以看见,无论是父节点,还是子孙节点,都是可以拿到根节点定义的数据的。