日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > vue >内容正文

vue

vue3跨层级通信

發(fā)布時(shí)間:2024/1/18 vue 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue3跨层级通信 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

常用的方法就不寫(xiě)了,主要分享下provide/inject(提供/注入)的方法
可以實(shí)現(xiàn)跨層組件(祖孫)間通信,不需要將數(shù)據(jù)一層一層向下傳遞

//父組件 Father.vue <template><son></son> </template> <script>import { defineComponent, reactive, provide, computed } from "vue";import son from "@/components/Son";export default defineComponent({components: {son},setup() {let params = reactive({name: "來(lái)自父親的參數(shù)"})provide("name", computed(()=> params.name)); //用計(jì)算屬性返回值能夠動(dòng)態(tài)傳遞來(lái)子/孫組件(當(dāng)子孫組件通過(guò)方法觸發(fā)修改name值時(shí))function changeName(val){params.name = val; //子孫組件觸發(fā)}provide("changeName",changeName);}}) </script> //兒子組件 Son.vue <template><h2>{{ name }}</h2> <button @click="changeName('兒子組件觸發(fā)')">兒子組件觸發(fā)Name修改</button><div class="grandson"><grandson></grandson></div> </template> <script> import grandson from "@/components/grandson"; import { defineComponent, inject } from "vue"; export default defineComponent({components: { grandson },setup() {let name = inject("name"); //接收Father組件傳來(lái)的namelet changeName = inject("changeName"); //接收方法return {name,changeName,};}, }); </script> //孫子組件 grandson.vue <template><h2>{{ name }}</h2><button @click="changeName('孫子組件觸發(fā)')">孫子組件觸發(fā)Name修改</button> </template> <script> import { defineComponent, inject, watch } from "vue"; export default defineComponent({name: "HelloWorld",setup() {let name = inject("name");let changeName = inject("changeName");watch(name,(newValue,oldValue)=>{//這里可以監(jiān)聽(tīng)name的變化})return {name,changeName,};}, }); </script>

子孫組件都接收到Father組件傳來(lái)的參數(shù)"來(lái)自Father組件的參數(shù)"。
當(dāng)點(diǎn)擊兒子組件或者孫子組件按鈕時(shí),觸發(fā)changeName事件在Father組件上name值也會(huì)改變。

總結(jié)

以上是生活随笔為你收集整理的vue3跨层级通信的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。