作用和場景:頂層組件向任意的底層組件傳遞數據和方法,實現跨層組件通信
跨層傳遞普通數據:
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了