vue中provide、inject的使用方法案例详解

 更新时间:2024年02月05日 14:54:53   作者:还是大剑师兰特  
本教程是介绍如何在vue中使用provide和inject,在 Vue 中,provide 和 inject 是用于实现祖先组件向后代组件传递数据的一种方式,对vue中provide、inject的使用方法感兴趣的朋友一起看看吧

示例背景

本教程是介绍如何在vue中使用provide和inject。在 Vue 中,provide 和 inject 是用于实现祖先组件向后代组件传递数据的一种方式。 在这个示例中,祖组件通过 provide 提供了 message 变量 和message2 变量 ,子组件通过 inject 注入了 message 变量,孙组件通过 inject 注入了 message2 变量。这样,子组件和孙就可以访问到父组件提供的数据。

示例效果图

示例源代码

父组件代码

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-02-04
*/
<template>
	<div class="djs-box">
		<div class="topBox">
			<h3>vue中provide/inject怎么使用(图文示例)</h3>
			<div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
		</div>
		<div class="dajianshi">
               <ComA></ComA>
		</div>
	</div>
</template>
<script>
	import ComA from '../components/provideInject/demo-A.vue';
	export default {
		components:{
			ComA
		},
		  provide() {
		    return {
		      message: 'Hello from ROOT-message',
			  message2: 'Hello from ROOT-message2'
		    };
		  }
	}
</script>
<style scoped>
	.djs-box {
		width: 1000px;
		height: 650px;
		margin: 50px auto;
		border: 1px solid teal;
	}
	.topBox {
		margin: 0 auto 0px;
		padding: 10px 0 20px;
		background: teal;
		color: #fff;
	}
	.dajianshi {
		width: 98%;
		height: 480px;
		margin: 5px auto 0;
		display: flex;
		justify-content: space-between;
		border:1px solid #369;
	}
</style>

子组件代码

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-02-04
*/
<template>
	<div style="margin-top: 100px;">
		<div class="left">
			<h2>儿子组件从跟组件获取的信息message:</h2>
			<div style="color: blue;">{{message}}</div>
		</div>
		<div class="right">
			<h2>孙子组件从跟组件获取的内容message2:</h2>
			<ChildA></ChildA>
		</div>
	</div>
</template>
<script>
   	import ChildA from '@/components/provideInject/demo-A-A.vue';
	export default {
		inject: ['message'],
		components:{
			 ChildA
		},
	}
</script>
<style scoped>
	.left{ width: 48%; float:left;}
	.right{ width: 48%; float:right; height:300px; border:1px solid #ddd;}
</style>

孙组件代码

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-02-04
*/
<template>
	<div>
		<div style="color: red;">{{ message2 }}</div>
	</div>
</template>
<script>
	export default {
      inject: ['message2'],
	}
</script>

基本使用步骤

Vue中的provide和inject是用于实现依赖注入的API,其基本使用步骤如下:

  • 在父组件中使用provide:在父组件(祖先组件)的provide选项中,指定想要提供给后代组件的数据或方法。这些数据或方法可以是任意类型,包括函数、对象、原始值等。
  • 在子组件中使用inject:在任何后代组件中,通过inject选项来接收父组件提供的数据或方法。inject可以是一个字符串数组,也可以是一个对象。如果是对象,可以指定键名与默认值。
  • 传递非响应式数据:需要注意的是,通过provide/inject传递的数据不会自动变成响应式的。如果需要在子组件中监听这些数据的变化,可能需要结合Vue的响应式系统进行处理。
  • 解决逐级传递问题:provide/inject特别适用于解决跨多个层级的组件间数据传递问题,避免了通过props逐级传递的繁琐过程。

到此这篇关于vue中provide、inject的使用方法的文章就介绍到这了,更多相关vue provide、inject使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue3项目新用户引导组件driver.js示例详解

    vue3项目新用户引导组件driver.js示例详解

    好用的用户引导插件有 intro.js 和 driver.js 两个,对比了一下,最终还是使用了driver.js,这篇文章主要介绍了vue3项目新用户引导组件(driver.js),需要的朋友可以参考下
    2022-08-08
  • vue实现带放大镜的搜索框

    vue实现带放大镜的搜索框

    这篇文章主要为大家详细介绍了vue实现带放大镜的搜索框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • vue使用mpegts.js的详细步骤记录

    vue使用mpegts.js的详细步骤记录

    MPEGTS.js是一个轻量级的JavaScript库,用于处理MPEG-TS流,这篇文章主要给大家介绍了关于vue使用mpegts.js的详细步骤记录,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • Vue3使用ref解决GetElementById为空的问题

    Vue3使用ref解决GetElementById为空的问题

    今天遇到一个问题,就是在Vue3组件中需要获取template中的元素节点,使用GetElementById返回的却是null,网上查找了好些资料,才发需要使用ref,所以本文给大家介绍了Vue3组件中如何使用ref解决GetElementById为空的问题,需要的朋友可以参考下
    2023-12-12
  • vue将某个组件打包成js并在其他项目使用

    vue将某个组件打包成js并在其他项目使用

    这篇文章主要给大家介绍了关于vue将某个组件打包成js并在其他项目使用的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 在Vue中实现拖拽功能的实例

    在Vue中实现拖拽功能的实例

    Vue实现拖拽功能的基本原理是监听鼠标事件,实时更新拖拽元素的位置,最后在合适的时机停止拖拽并更新元素位置,在Vue中,我们可以通过绑定相关事件来实现这一功能
    2025-02-02
  • Vue中的变量赋值问题

    Vue中的变量赋值问题

    这篇文章主要介绍了Vue中的变量赋值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Vuejs 单文件组件实例详解

    Vuejs 单文件组件实例详解

    这篇文章主要介绍了Vuejs 单文件组件实例详解,需要的朋友可以参考下
    2018-02-02
  • 用vue2.0实现点击选中active其他选项互斥的效果

    用vue2.0实现点击选中active其他选项互斥的效果

    这篇文章主要介绍了用vue2.0实现点击选中active其他选项互斥的效果,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • vue中get和post请求的区别点总结

    vue中get和post请求的区别点总结

    在本篇文章里小编给大家分享的是一篇关于vue中get和post请求的区别点总结内容,对此有兴趣的朋友们可以跟着学习下。
    2021-12-12

最新评论