vue3--provide和inject

顶层组件向任意的底层组件 传递数据和方法 ,实现 跨层组件通信
一.跨层传递普通数据
1. 顶层组件通过 provide函数提供 数据
2. 底层组件通过 inject函数获取 数据
二.跨层传递响应式数据
在调用provide函数时,第二个参数设置为 ref对象
三.跨层传递方法
顶层组件可以向底层组件传递方法, 底层组件调用方法修改顶层组件中的数据
顶层组件代码
<script setup>
import {inject} from 'vue'


// 1.跨层传递普通数据
const themeColor = inject('theme-color')

// 2.跨层响应式数据
const count = inject('count')

// 3.跨层级传递函数=>给子孙后代传递可以修改数据的方法
const changeCount = inject('changeCount')
const clickFn =()=>{
    // count=1000不可以直接修改
changeCount(1000)
}
</script>
<template>
<div>
  <h3>我是底层组件 ---{{ themeColor }}-----{{count}}</h3>
  <button @click="clickFn">更新count</button>
</div>
</template>

中层组件代码

<script setup>
import BottomCom from './bottom-com.vue'
</script>
<template>
<div>
  <h2>我是中间组件</h2>
  <BottomCom></BottomCom>
</div>
</template>

底层组件代码

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


// 1.跨层传递普通数据
const themeColor = inject('theme-color')

// 2.跨层响应式数据
const count = inject('count')

// 3.跨层级传递函数=>给子孙后代传递可以修改数据的方法
const changeCount = inject('changeCount')
const clickFn =()=>{
    // count=1000不可以直接修改
changeCount(1000)
}
</script>
<template>
<div>
  <h3>我是底层组件 ---{{ themeColor }}-----{{count}}</h3>
  <button @click="clickFn">更新count</button>
</div>
</template>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值