父组件越过子组件可直接将数据传递给孙子组件
html
<body>
<div id="app">
<p>父页面</p>
<Child></Child>
</div>
</body>
js
<script>
Vue.component('grandChild', {
template: `
<div>
<p>孙子组件测试数据</p>
<p>{{testMsg}}</p>
</div>
`,
inject: ['testMsg']
})
Vue.component('child', {
template: `
<div>
<p>子组件测试数据</p>
<grandChild></grandChild>
</div>
`
})
const vm = new Vue({
el: '#app',
data: {
},
methods: {},
provide() {
return {
testMsg: '张三'
}
}
})
</script>
使用props逐层传递的话,如果组件链路非常长,可能会影响到更多这条路上的组件。这一问题被称为“prop 逐级透传”,显然是我们希望尽量避免的情况。provide 、inject就可以解决该问题,定向定点的传递数据,不需要通过中间的组件