vue3 非父子組件通信詳解
業(yè)務(wù)場景是,不是父子組件實現(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ù)
事實上我們之前還學(xué)習(xí)過Provide和Inject,Composition API也可以替代之前的 Provide 和 Inject 的選項。
我們可以通過 provide來提供數(shù)據(jù):
provide可以傳入兩個參數(shù):
name
:提供的屬性名稱;
value
:提供的屬性值;
在 后代組件 中可以通過 inject 來注入需要的屬性和對應(yīng)的值:
可以通過 inject 來注入需要的內(nèi)容;
inject可以傳入兩個參數(shù):
要 inject 的 property 的 name;
默認(rèn)值;
數(shù)據(jù)的響應(yīng)式
為了增加 provide 值和 inject 值之間的響應(yīng)性,我們可以在 provide 值時使用 ref 和 reactive。
修改響應(yīng)式Property
如果我們需要修改可響應(yīng)的數(shù)據(jù),那么最好是在數(shù)據(jù)提供的位置來修改:我們可以將修改方法進行共享,在后代組件中進行調(diào)用;
注意
如果我們子組件應(yīng)該是只能使用,不能修改的狀態(tài)
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Ant?Design?Vue?修改表格頭部樣式的詳細(xì)代碼
這篇文章主要介紹了Ant?Design?Vue?修改表格頭部樣式,首先用到的是customHeaderRow這個API,類型是一個函數(shù),本文通過完整代碼給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10解決Vue使用百度地圖BMapGL內(nèi)存泄漏問題?Out?of?Memory
這篇文章主要介紹了解決Vue使用百度地圖BMapGL內(nèi)存泄漏問題?Out?of?Memory,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12element-ui樹形控件后臺返回的數(shù)據(jù)+生成組織樹的工具類
這篇文章主要介紹了element-ui樹形控件后臺返回的數(shù)據(jù)+生成組織樹的工具類,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03探索Vue.js component內(nèi)容實現(xiàn)
這篇文章主要和大家一起探索Vue.js component內(nèi)容實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11