Vue3基础知识:组合式API中的provide和inject,他们作用是什么?如何使用?以及案例演示

1.provide和inject相较于父子传递的不同在于provide,inject可以用于跨层级通信(通俗易懂的讲就是可以实现爷孙之间的直接信息传递)。

1.跨层级传递数据

1.在顶层组件通过provide函数提供数据

2.底层组件通过inject函数获取数据

演示一:跨层传递普通数据。

效果图:

演示二:跨层传递动态数据。

效果图:

3.最后附上源代码:

爷爷组件App.vue
javascript 复制代码
<script setup>
import Father from './components/Father.vue';
import { provide ,ref} from 'vue';

//传递普通数据
provide('HairColor','black')

//传递相应式数据
const count=ref(100)
provide('count',count)

//跨层级传递函数
provide('changeCount',(SonInfo)=>{
  count.value--
  console.log(SonInfo)
})
</script>



<template>
  <div>
    <h1>这个是爷爷</h1>
    <father></father>
  </div>
</template>



<style lang="scss" scoped>

</style>
父亲组件Father.vue
javascript 复制代码
<script setup>
import Son from './Son.vue';
</script>


<template>
    <div>
        <h2>这里是爸爸</h2>
        <Son></Son>
    </div>
</template>



<style lang="scss" scoped>

</style>
孙子组件Son.vue
javascript 复制代码
<script setup>
import { inject } from 'vue';
const HairColor=inject('HairColor')

//
const count=inject('count')

const ChangeCount=inject('changeCount')
const clickFn=()=>{
    ChangeCount('传给父亲的数据')
}
</script>



<template>
    <div>
        <h3>这里是儿子---爷爷头发的颜色---{{HairColor}} 年龄为:{{count}}岁</h3>
        <button @click="clickFn">年龄减一</button>
    </div>
</template>



<style lang="scss" scoped>

</style>
相关推荐
不会敲代码126 分钟前
手写 Mini React:从 JSX 到虚拟 DOM 再到 render,搞懂 React 底层原理
前端·javascript·react.js
kyriewen1 小时前
你的代码仓库变成“毛线团”了?Monorepo 用 Turborepo 拆成“乐高积木”
前端·javascript·面试
身如柳絮随风扬2 小时前
你知道什么是 Ajax 吗?—— 从入门到原理,一篇彻底搞懂
前端·ajax·okhttp
旷世奇才李先生2 小时前
Vue3\+TypeScript 2026实战——企业级前端项目架构搭建与性能优化全指南
前端·架构·typescript
Beginner x_u3 小时前
前端八股整理(工程化 02)|CommonJS/ESM、Webpack Loader/Plugin 与Vite 对比
前端·webpack·node.js·plugin·loader
openKaka_3 小时前
createRoot 到底创建了什么:FiberRootNode 和 HostRootFiber 的初始化过程
前端·javascript·react.js
习明然3 小时前
UniApp开发体验感受总结
前端·uni-app
刀法如飞4 小时前
Claude Code Skills 推荐:2026年最值得安装的10个AI技能
前端·后端·ai编程
阿豪只会阿巴4 小时前
【没事学点啥】TurboBlog轻量级个人博客项目——项目介绍
javascript·python·django·html
Lee川5 小时前
面试手写 KeepAlive:React 组件缓存的实现原理
前端·react.js·面试