vue3依赖注入 provide inject

简介: vue3依赖注入 provide inject

根组件嵌套组件A 组件A嵌套组件B 根组件想把数据给子组件B 必须是先给A然后A在给B
依赖注入解决这种复杂问题
在这里插入图片描述
App.vue


<template>
  <div class="app">
    我是根组件
   <A></A>
   
  </div>
</template>

<script setup lang="ts">
import {reactive,ref,provide} from 'vue';
import A  from './components/A.vue';
 provide('flag',ref(false))//ref是把这个布尔值变为响应式
</script>

<style scoped>
.app{
    width:300px;height: 300px;
    background: yellow;
    color: #ffffff;
}
</style>

组件A

<template>
    <div class="A">
        <button @click="add">changes</button>
        我是A组件{{data}}
        <B></B>
    </div>
</template>

<script setup lang="ts">
import  {inject,ref,Ref} from 'vue';

import B  from './B.vue'
let  data=inject<Ref<Boolean>>('flag',ref(false));//ref(false)默认值 当provide没传值使用
let add=()=>{
    data.value=!data.value
}
</script>

<style scoped>
.A{
    width: 250px;height: 250px;
    background: red;
    color: #ffffff;
}
</style>

组件B

<template>
    <div class="B">
        我是B组件{{data}}
    </div>
</template>

<script setup lang="ts">
import  {inject} from 'vue';
let  data=inject('flag')

</script>

<style scoped>
.B{
    width: 200px;height: 200px;
    background: green;
    color: #ffffff;
}
</style>
相关文章
|
4天前
|
缓存 监控 UED
升级 Vue3 时,如何减少打包体积的增加?
升级 Vue3 时,如何减少打包体积的增加?
81 59
|
4天前
|
JavaScript
在vue3中(vite)引入unocss,安装配置unocss
在vue3中(vite)引入unocss,安装配置unocss
|
5天前
|
缓存 JavaScript 前端开发
「offer来了」从基础到进阶原理,从vue2到vue3,48个知识点保姆级带你巩固vuejs知识体系
该文章全面覆盖了Vue.js从基础知识到进阶原理的48个核心知识点,包括Vue CLI项目结构、组件生命周期、响应式原理、Composition API的使用等内容,并针对Vue 2与Vue 3的不同特性进行了详细对比与讲解。
「offer来了」从基础到进阶原理,从vue2到vue3,48个知识点保姆级带你巩固vuejs知识体系
|
4天前
|
API UED
如何实现Vue2项目升级Vue3?
如何实现Vue2项目升级Vue3?
12 1
|
4天前
|
API UED
升级 Vue3 后,项目的打包体积会有什么变化?
升级 Vue3 后,项目的打包体积会有什么变化?
9 0
|
6天前
|
JavaScript
vue组件中的插槽
本文介绍了Vue中组件的插槽使用,包括单个插槽和多个具名插槽的定义及在父组件中的使用方法,展示了如何通过插槽将父组件的内容插入到子组件的指定位置。
|
4天前
|
JavaScript
vue消息订阅与发布
vue消息订阅与发布
|
22小时前
|
JavaScript
理解 Vue 的 setup 应用程序钩子
【10月更文挑战第3天】`setup` 函数是 Vue 3 中的新组件选项,在组件创建前调用,作为初始化逻辑的入口。它接收 `props` 和 `context` 两个参数,内部定义的变量和函数需通过 `return` 暴露给模板。`props` 包含父组件传入的属性,`context` 包含组件上下文信息。`setup` 可替代 `beforeCreate` 和 `created` 钩子,并提供类似 `data`、`computed` 和 `methods` 的功能,支持逻辑复用和 TypeScript 类型定义。
19 11
|
4天前
|
JavaScript 前端开发 IDE
Vue学习笔记5:用Vue的事件监听 实现数据更新的实时视图显示
Vue学习笔记5:用Vue的事件监听 实现数据更新的实时视图显示
|
4天前
|
JavaScript 前端开发 API
Vue学习笔记4:用reactive() 实现数据更新的实时视图显示
Vue学习笔记4:用reactive() 实现数据更新的实时视图显示
下一篇
无影云桌面