Vue3-provide和inject

作用和场景:顶层组件向任意的底层组件传递数据和方法,实现跨层组件通信

跨层传递普通数据:

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

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

既可以传递普通数据,也可以使用ref传递响应式数据(顶层组件修改数据后可以响应过去)

但是底层组件不能修改顶层组件传递过来的数据,所以我们可以在顶层组件中跨层传递函数,给子孙后代传递可以修改数据的方法

顶层组件

复制代码
<script setup>
    import {provide,ref} from 'vue'
    const count=ref(100)
    provide('changeCount',(newCount)=>{
        count.value=newCount
    })
</script>

底层组件

复制代码
<script setup>
    import {inject} from 'vue'
    const changeCount=inject(changeCount)
    changeCount(1000)//可以放在点击事件上
</script>

这样就可以把父组件里的count改为1000了

相关推荐
hexu_blog14 小时前
前端vue后端java+springboot如何实现pdf,word,excel之间的相互转换
java·前端·vue.js·spring boot·文档转换
w_t_y_y14 小时前
vue父子组件通信(二)祖先调用inject
前端·javascript·vue.js
哆哆啦0015 小时前
URL 重写规则和静态资源解析逻辑
前端·浏览器·url
wkj00115 小时前
JavaScript模块化技术进程详解
开发语言·javascript·ecmascript
IT_陈寒15 小时前
Java的Stream.peek()千万别乱用,血泪教训
前端·人工智能·后端
w_t_y_y15 小时前
VUE组件配置项(二)data和props
前端·javascript·vue.js
Martin -Tang15 小时前
uniapp+vue3+ts自定义表格
javascript·vue.js·uni-app
问心无愧051315 小时前
ctf show web入门 89
android·前端·笔记
hexu_blog15 小时前
前端vue后端java+springboot如何显示视频压缩
前端·vue.js·vue压缩视频·java压缩视频·指定大小压缩视频
欧阳天风15 小时前
electron播放本地音乐的问题
前端·javascript·electron