Vue中inject与provide的用法
本文共 1,175 字,预计阅读时间 4 分钟
provide/inject提供了一种新的组件间通信的方法。它允许父组件向子孙组件间进行跨层级的数据分发,但是provide/inject是非响应式的。一般用于子组件调用父组件的共有方法。它们两个需要一起使用,允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。
实例如下:
Test.vue:
<template>
<div class="about">
<h1>我是父组件:{{msg}}</h1>
<button @click="changeMsg">点位改变</button>
<test2></test2>
</div>
</template>
<script>
import test2 from "./Test2";
export default {
name: "Test",
data() {
return {
msg: "你好啊"
};
},
//给子组件传递数据和方法
provide() {
return {
msg: this.msg,
messageBox: this.messageBox
};
},
components: {
test2
},
methods: {
changeMsg() {
this.msg = "今天天气转暖";
},
messageBox(msg){
alert(msg)
}
}
};
</script>
<style>
</style>
Test2.vue:
<template>
<div><h3>我是子组件</h3>{{msg}}
<button @click="message">我要执行父组件的方法</button>
</div>
</template>
<script>
export default {
name:'Test2',
//接收父组件的数据
inject:['msg','messageBox'],
methods:{
message(){
this.messageBox('我是子组件')
}
}
}
</script>
<style>
</style>
当点击父组件中的按钮时,父组件中的msg已经改变,但是子组件中接收的数据并未发生变化。这就说明这种方式共享数据不是响应式的,一般不使用这种方式传递数据。
当点击子组件中的按钮时,会执行父组件的messageBox方法,是推荐的用法。
就是这么简单,你学废了吗?感觉有用的话,给笔者点个赞吧 !
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2020-06-26 easyPOI基本用法