vue3 获取$attrs 跨组件通信 provide – inject 兄弟组件eventBus

  • Post author:
  • Post category:vue


	vue3 获取$attrs的方式
	<Attrs title="this is title" :data="attrsData"/>
	<script setup>
	 import Attrs from "./components/Attrs/Attrs"
	 let attrsData = reactive(
	    [
	      {
	        id: 1,
	        name: 'gq'
	      }
	    ]
	)
	</script>
	// 来到Attrs 组件中 官网也说这种方式其实不常见的
	import {useAttrs} from "vue"
	const attrs =  useAttrs();
--------------------分割------------------------------------------
	provide 提供一个数据,并且无论嵌套多少层子组件都是可以获取到数据的
	let labelData = reactive(
    {
      name: 'gq',
      sex: '男',
      labelArray: [
        {
          address: '大连'
        },
        {
          address: '上海'
        }
      ]
    }
	)
	provide('label', labelData);
	其他组件的位置
	import {inject} from "vue"
	let  data=  inject('label');
	console.log(data);   
-------------------分割--------------------------------------------
	这是兄弟组件相互传递参数
	event bus 配置 
	npm  install mitt -s
	创建一个 mitt的文件夹并添加 	mitt.js
	import mitt from 'mitt';
	const mittBus = mitt();
	export default mittBus;
	//使用方式
	<script  setup>
	import bus from "../../mitt/mitt"
	const sendBrothValue = () => {
	  bus.emit('ok', 'this is  a  message')
	}
	</script>
	// 接收方式
	<script setup>
	import bus from "../../mitt/mitt"
	import {onMounted,onUnmounted} from "vue";
	onMounted(() => {
	  bus.on('ok', (value) => {
	    console.log(value);
	  })
	})
	// 组件销毁,删除中转站的监听
	onUnmounted(()=>{
	  bus.off('ok');
	})
	</script>



版权声明:本文为weixin_45932463原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。