当前位置: 首页 > news >正文

第六十:跨组件通信-依赖注入(父传递给其他组件)

注意: provide 通过 key 的形式发送给子组件

provide  // 是将 父组件所有东西传递给所有子组件
provide("provideWeb",{name:"邓瑞",url:"www.dengruicode.com"})

// 传递对象数据
//传递响应式数据
  const user = ref(0)
  provide("provideUser",user)

注意:    //子组件通过inject注入父组件提供的 响应式数据 inject 接收父组件数据

inject

App.vue

<script setup>
  import { provide, ref } from 'vue'

  //导入子组件
  import Header from "./components/header.vue"

  //provide用于父组件将 数据 提供给所有子组件
  /*
    若使用了provide和inject来进行数据传递,
    则一般不需要再使用defineProps
  */
  provide("provideWeb",{name:"邓瑞",url:"www.dengruicode.com"})

  //传递响应式数据
  const user = ref(0)
  provide("provideUser",user)

  //添加用户
  const userAdd = () => {
    user.value++
  }
  //用于父组件将 函数 提供给所有子组件
  provide("provideFuncUserAdd",userAdd)
</script>

<template>
  <h3>App.vue-Top组件</h3>

  {{ user }}

  <!-- 子组件 -->
  <Header/>
</template>

<style scoped></style>

header.vue

<script setup>
    import { provide, inject } from 'vue'

    //导入子组件
    import Nav from "./nav.vue"

    //子组件通过inject注入父组件提供的 响应式数据
    const user = inject("provideUser")
    console.log("provideUser:",user.value)

    //provide用于父组件将 数据 提供给所有子组件
    provide("provideUrl","dengruicode.com")
</script>

<template>
    <h3>header.vue-Middle组件</h3>

    <!-- 子组件 -->
    <Nav/>
</template>

<style scoped>

</style>

nav.vue

<script setup>
    //子组件
    import { inject } from 'vue'

    //子组件通过inject注入父组件提供的 数据
    const web = inject("provideWeb")
    console.log("provideWeb:",web)

    const url = inject("provideUrl")
    console.log("provideUrl:",url)

    //子组件通过inject注入父组件提供的 函数
    const funcUserAdd = inject("provideFuncUserAdd")
    console.log("provideFuncUserAdd:",funcUserAdd)
</script>

<template>
    <h3>nav.vue-Bottom组件</h3>

    <button @click="funcUserAdd">添加用户</button>
</template>

<style scoped>

</style>

相关文章:

  • C# | 委托 | 事件 | 异步
  • Varjo XR-4 混合现实驾驶仿真解决方案
  • 迷你世界脚本UI五子棋小游戏
  • JDBC 完全指南:掌握 Java 数据库交互的核心技术
  • SpringBoot为什么要禁止循环依赖?
  • 从零开始的 Kafka 学习(一)| 概念,Java API
  • ⭐算法OJ⭐跳跃游戏【动态规划 + 单调队列】(C++实现)Jump Game 系列 VI
  • 场景题:10亿QQ用户,如何统计在线人数?
  • 2025最新在GitHub上搭建个人图床,保姆级图文教程,实现图片高效管理
  • 通过RK3588的cc-linaro-7.5.0交叉编译器搭建QT交叉编译环境QtCreator(无需编译QT源码)
  • 将数据库结构化数据整合到RAG问答中的方式
  • android .rc文件
  • 【图像识别UI自动测试技术第二章】模版匹配算法学习分享
  • office或者word排版中,复制/黏贴进来文字不会自动换行,如何处理?
  • 系统架构设计师—计算机基础篇—进度管理
  • 在线研讨会 | 加速游戏和AI应用,全面认识Imagination DXTP GPU
  • 防火墙虚拟系统实验
  • leetcode 1328. 破坏回文串 中等
  • FieldFox 手持射频与微波分析仪
  • 力扣刷题DAY5(二分/简单+滑动窗口/中等)
  • 网站建设公司特色/郑州seo排名优化
  • 外国媒体网站/友链出售
  • 怎样给公司做推广 网站/seo网络推广员招聘
  • 高端品牌车/seo如何优化的
  • 域名如何申请/黄山搜索引擎优化
  • 免费建站网站 seo/网站建设费用明细表