vue3如何通过provide和inject实现多层级组件通信

 更新时间:2023年11月28日 10:21:44   作者:Attacking-Coder  
这篇文章主要介绍了vue3如何通过provide和inject实现多层级组件通信,本文通过实例代码给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

vue3通过provide和inject实现多层级组件通信

父组件

<template>
  <div>
    <h1>我是父组件 {{num}}</h1>
    <hr>
    <child></child>
  </div>
</template>
<script setup>
import child from './child.vue';
import { ref,provide } from 'vue';
let num = ref(520)
provide('parentNum',num)
</script>

子组件

<template>
  <div>
    <h2>我是子组件</h2>
    <hr>
    <grandchild></grandchild>
  </div>
</template>
<script setup>
import grandchild from './grandchild.vue';
</script>

孙子组件

<template>
  <div>
    <h3>我是孙子组件</h3>
    <p>这是爷爷的值 {{parentNum}}</p>
    <button @click="handler">点击我爷爷的值减100</button>
  </div>
</template>
<script setup>
import { inject } from 'vue';
let parentNum = inject('parentNum')
const handler = () => {
  parentNum.value -= 100
}
</script>

在这里插入图片描述

扩展:

vue3 provide 和 inject 的用法 实现跨层级的组件通信

1.父组件利用 provide 提供数据也就是传

<script setup>
import { provide, ref } from 'vue'
import son from './son.vue'
let msg = ref('xjj')
// 在父组件中将 msg 设置为依赖注入:能够在所有的后代组件中使用这些数据
provide('msg', msg)
</script>
<template>
  <h2>05-组合式API - 依赖注入</h2>
  <h3>父组件</h3>
  <div>msg: {{ msg }}</div>
  <son></son>
</template>
<style></style>

2.子组件通过 inject (子孙后代, 都可以拿到这个数据)也就是收

<script setup>
import { inject } from 'vue'
import gson from './gson.vue'
let msg = inject('msg')
</script>
<template>
  <h3>子组件</h3>
  <div>msg: {{ msg }}</div>
  <gson></gson>
</template>
<style></style>

注意:为了给 provide/inject 添加响应式,使用 ref 或 reactive

到此这篇关于vue3通过provide和inject实现多层级组件通信的文章就介绍到这了,更多相关vue3多层级组件通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue2中Print.js的使用超详细讲解(pdf、html、json、image)

    vue2中Print.js的使用超详细讲解(pdf、html、json、image)

    项目中有用到打印功能,网上就找了print.js,下面这篇文章主要给大家介绍了关于vue2中Print.js使用(pdf、html、json、image)的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • 动画详解Vue3的Composition Api

    动画详解Vue3的Composition Api

    为让大家更好的理解Vue3的Composition Api本文采用了详细的动画演绎,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • vue+elementUi中的table实现跨页多选功能(示例详解)

    vue+elementUi中的table实现跨页多选功能(示例详解)

    最近在开发工业品超市的后台系统,遇到一个需求,就是实现在一个table表格中多选数据,在网上查了好多,有些方法真的是无语,下面通过本文给大家分享vue+elementUi中的table实现跨页多选功能,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • vue踩坑记之npm install报错问题解决总结

    vue踩坑记之npm install报错问题解决总结

    当你跑起一个项目的时候,第一步需要先安装依赖npm install,下面这篇文章主要给大家介绍了关于vue踩坑之npm install报错问题解决的相关资料,需要的朋友可以参考下
    2022-06-06
  • 详解vue 组件之间使用eventbus传值

    详解vue 组件之间使用eventbus传值

    本篇文章主要介绍了vue 组件之间使用eventbus传值。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • vue.js云存储实现图片上传功能

    vue.js云存储实现图片上传功能

    示对象存储是腾讯云提供的一种存储海量文件的分布式存储服务,本文主要介绍了用vue.js实现图片上传功能,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • Vue3中导入和使用组件几种常见方法(.vue文件)

    Vue3中导入和使用组件几种常见方法(.vue文件)

    组件是Vue.js最强大的功能之一, 组件可以扩展HTML元素,封装可重用的代码,下面这篇文章主要介绍了Vue3中导入和使用组件几种常见方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09
  • vue拖拽添加的简单实现

    vue拖拽添加的简单实现

    本文主要介绍了vue拖拽添加的简单实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • vue实现的多页面项目如何优化打包的步骤详解

    vue实现的多页面项目如何优化打包的步骤详解

    这篇文章主要介绍了vue实现的多页面项目如何优化打包的步骤详解,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • Vue2过渡标签transition使用动画方式

    Vue2过渡标签transition使用动画方式

    这篇文章主要介绍了Vue2过渡标签transition使用动画方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07

最新评论