Vue中一個(gè)組件調(diào)用其他組件的方法詳解(非父子組件)
前言
Vue中,一個(gè)組件調(diào)用其他組件的方法(非父子組件)
場(chǎng)景——B頁(yè)面(組件)想調(diào)用 A頁(yè)面(組件)中的方法;但是兩個(gè)頁(yè)面(組件)毫無(wú)關(guān)聯(lián)(刷新 A的數(shù)據(jù))。
方式一:引用式
1、當(dāng)前組件引入將要調(diào)用方法所屬的組件
這里我的當(dāng)前組件要調(diào)用OrderDetail
這個(gè)組件的check()
方法
import Detail from "./detail.vue";
該方法定義在OrderDetail
的methods屬性中
2、當(dāng)前組件通過(guò)該組件methods屬性直接調(diào)用該方法
// 也可以調(diào)用 created、data等 Detail.methods.check();
方式二:vuex
使用 VueX 定義一個(gè)屬性 ,然后在A頁(yè)面 定義一個(gè)計(jì)算屬性(computed) 再把 vuex 的屬性返回給它,再監(jiān)聽(tīng)這個(gè)計(jì)算屬性,發(fā)生變化就調(diào)用你要執(zhí)行的方法。
1、src/store/index.js
// Vuex 全局 state: { tableStatus:false } mutations:{ changeStatus(state,status) { // 重復(fù)賦值 state.tableStatus = status; }, }
2、被使用組件- A 頁(yè)面(組件)
// A 頁(yè)面(組件) computed: { status() { // 計(jì)算屬性 return this.$store.state.tableStatus; // Vuex 中定義的屬性 } }, watch:{ status() { this.getTableList(); // 需要調(diào)用的方法 } },
3、使用觸發(fā)頁(yè)面-B 頁(yè)面(組件)
然后就是在B 頁(yè)面定義一個(gè)點(diǎn)擊事件(舉例),重新給 Vuex中的屬性賦值就行了
// B頁(yè)面(組件) closePage() { let status = this.$store.state.tableStatus; // 重新賦值 this.$store.commit("changeStatus", !status); },
方式三:使用事件總線(xiàn)eventBus定義全局事件
1、src/main.js
window.eventBus = new Vue();
2、觸發(fā)頁(yè)面-B組件/發(fā)布事件
window.eventBus.$emit('setFeaturesData', data) // 帶參數(shù) window.eventBus.$emit('setFeaturesData') // 不帶參數(shù)
3、接收頁(yè)面-A組件/訂閱事件
window.eventBus.$on('setFeaturesData', (data)=>{ // 帶參數(shù) this.hoveredFeatures = [data] this.onClick() }) mounted() { this.getTableData() window.eventBus.$on('setFeaturesData', ()=>{ // 不帶參數(shù) this.getTableData() }) },
4、移除事件
window.eventBus.$off('setFeaturesData')
總結(jié)
到此這篇關(guān)于Vue中一個(gè)組件調(diào)用其他組件(非父子組件)的文章就介紹到這了,更多相關(guān)Vue組件調(diào)用其他組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue3父子組件互調(diào)方法的實(shí)現(xiàn)
- Vue實(shí)現(xiàn)父子組件頁(yè)面刷新的幾種常用方法
- vue3?父子組件間相互傳值方式
- 關(guān)于Vue3父子組件emit參數(shù)傳遞問(wèn)題(解決Vue2this.$emit無(wú)效問(wèn)題)
- vue3自定義組件之v-model實(shí)現(xiàn)父子組件雙向綁定
- 淺析Vue3中通過(guò)v-model實(shí)現(xiàn)父子組件的雙向數(shù)據(jù)綁定及利用computed簡(jiǎn)化父子組件雙向綁定
- Vue父子組件傳值的三種方法
- vue父子組件動(dòng)態(tài)傳值的幾種方式及注意問(wèn)題詳解
- Vue父子組件數(shù)據(jù)雙向綁定(父?jìng)髯?、子傳父)及ref、$refs、is、:is的使用與區(qū)別
相關(guān)文章
Vue格式化數(shù)據(jù)后切換頁(yè)面出現(xiàn)NaN問(wèn)題及解決
這篇文章主要介紹了Vue格式化數(shù)據(jù)后切換頁(yè)面出現(xiàn)NaN問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06vue3+vite中開(kāi)發(fā)環(huán)境與生產(chǎn)環(huán)境全局變量配置指南
最近在使用vite生成項(xiàng)目,這篇文章主要給大家介紹了關(guān)于vue3+vite中開(kāi)發(fā)環(huán)境與生產(chǎn)環(huán)境全局變量配置的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08解決vue報(bào)錯(cuò)'超出最大堆棧大小'問(wèn)題
這篇文章主要介紹了解決vue報(bào)錯(cuò)'超出最大堆棧大小'問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04vue組件實(shí)現(xiàn)彈出框點(diǎn)擊顯示隱藏效果
這篇文章主要為大家詳細(xì)介紹了vue組件實(shí)現(xiàn)彈出框點(diǎn)擊顯示隱藏,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04vue路徑寫(xiě)法之關(guān)于./和@/的區(qū)別
這篇文章主要介紹了vue路徑寫(xiě)法之關(guān)于./和@/的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09VUE前端實(shí)現(xiàn)token的無(wú)感刷新方式
這篇文章主要介紹了VUE前端實(shí)現(xiàn)token的無(wú)感刷新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11Vue-element中el-input輸入卡頓問(wèn)題的解決
這篇文章主要介紹了Vue-element中el-input輸入卡頓問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04vue3切換路由時(shí)頁(yè)面空白問(wèn)題解決辦法
在使用Vue3時(shí),有時(shí)頁(yè)面修改后會(huì)出現(xiàn)空白,這篇文章主要介紹了vue3切換路由時(shí)頁(yè)面空白問(wèn)題解決辦法,文中介紹的步驟可以有效解決頁(yè)面空白問(wèn)題,需要的朋友可以參考下2024-09-09vue3解構(gòu)賦值失去響應(yīng)式引發(fā)的問(wèn)題思考
這篇文章主要介紹了vue3解構(gòu)賦值失去響應(yīng)式引發(fā)的問(wèn)題思考,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-06-06vue+electron實(shí)現(xiàn)創(chuàng)建多窗口及窗口間的通信(實(shí)施方案)
這篇文章主要介紹了vue+electron實(shí)現(xiàn)創(chuàng)建多窗口及窗口間的通信,本文給大家分享實(shí)施方案結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09