vue2中非父子组件的传值主要是通过事件总线,创建一个vue实例,通过在不同的组件中导入该实例来实现非父子组件之间的通信行为。
vue3提供了**provide**和**inject**属性,可以实现非父子组件之间的通信;
假设有三个组件:App.vue(父级)、sub1(子级)、sub2(子级的子级):
App.vue
<template>
<div style="border: 1px solid pink">
<h1>我是你爹</h1>
<span>👇</span>
<sub1/>
</div>
</template>
<script>
import sub1 from './sub1'
export default {
name: "App",
components:{
sub1,
},
provide:{
// 通过在父组件中定义provide 声明要传递的值
names:['peanut','javascriptKing']
}
}
</script>
<style scoped>
</style>
sub1.vue