vue3 非父子組件通信詳解
業(yè)務場景是,不是父子組件實現(xiàn)通信
文件目錄

第一種方法
App.vue
<template>
<div>
<Home></Home>
<button @click="addName">增加名字</button>
</div>
</template>
<script>
import Home from "./Home.vue";
import { computed } from "vue";
export default {
name: "App",
components: {
Home,
},
provide() {
return {
name: "張三",
age: 23,
length: computed(() => this.names.length),
};
},
data() {
return {
names: ["張三", "李四", "王五"],
};
},
methods: {
addName() {
this.names.push("fuck you");
console.log("hhhh");
},
},
};
</script>
<style scoped>
</style>
Home.vue
<template>
<div>
<div>我是home</div>
<home-content></home-content>
</div>
</template>
<script>
import HomeContent from "./HomeContent.vue";
export default {
name: "Home",
components: {
HomeContent,
},
};
</script>
<style scoped>
</style>
HomeContent.vue
<template>
<div>HomeContent:{{ name }}--{{ age }}---{{ length }}</div>
</template>
<script>
export default {
inject: ["name", "age", "length"],
};
</script>
<style lang="scss" scoped>
</style>
vue3中使用Provide函數(shù)和Inject函數(shù)
事實上我們之前還學習過Provide和Inject,Composition API也可以替代之前的 Provide 和 Inject 的選項。
我們可以通過 provide來提供數(shù)據(jù):
provide可以傳入兩個參數(shù):
name:提供的屬性名稱;
value:提供的屬性值;

在 后代組件 中可以通過 inject 來注入需要的屬性和對應的值:
可以通過 inject 來注入需要的內(nèi)容;
inject可以傳入兩個參數(shù):
要 inject 的 property 的 name;
默認值;

數(shù)據(jù)的響應式
為了增加 provide 值和 inject 值之間的響應性,我們可以在 provide 值時使用 ref 和 reactive。
修改響應式Property
如果我們需要修改可響應的數(shù)據(jù),那么最好是在數(shù)據(jù)提供的位置來修改:我們可以將修改方法進行共享,在后代組件中進行調(diào)用;
注意
如果我們子組件應該是只能使用,不能修改的狀態(tài)

總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!
相關文章
解決Vue使用百度地圖BMapGL內(nèi)存泄漏問題?Out?of?Memory
這篇文章主要介紹了解決Vue使用百度地圖BMapGL內(nèi)存泄漏問題?Out?of?Memory,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
element-ui樹形控件后臺返回的數(shù)據(jù)+生成組織樹的工具類
這篇文章主要介紹了element-ui樹形控件后臺返回的數(shù)據(jù)+生成組織樹的工具類,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
探索Vue.js component內(nèi)容實現(xiàn)
這篇文章主要和大家一起探索Vue.js component內(nèi)容實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11

