vue單文件組件無(wú)法獲取$refs的問(wèn)題
記錄一下學(xué)習(xí)webpack+vue碰到的一個(gè)大坑,踩這個(gè)坑是我才疏學(xué)淺的表現(xiàn),特此引以為戒。因?yàn)樵摽訉?shí)在是太坑了!
代碼
header.html
<body> <div id="popup-wrap"> <popup ref="popup"></popup> </div> </body>
header.js
import popup from '../../components/popup/popup.vue' import './header.scss' let header_vue; $(function () { header_vue = new Vue({ el: '#popup-wrap', data: { }, mounted: { // 輸出為{popup: VueComponent} console.log(this.$refs); } components: {popup}, methods: { pop_data: function () { // 輸出為{} console.log(this.$refs); } } }); }); export {header_vue}
other.js
import {header_vue} from "../header/header"; $(function () { header_vue.pop_data() });
popup.vue是一個(gè)普通的彈窗組件。我在header.js中引入該組件,并實(shí)例化一個(gè)header_vue使用了popup組件,然后在other.js中引入header_vue試圖使用pop_data函數(shù),該函數(shù)僅輸出header_vue的$refs,經(jīng)測(cè)試,該函數(shù)輸出為一個(gè)空的對(duì)象,但是mounted鉤子正常輸出。
我就很納悶,為啥mounted輸出正常,函數(shù)調(diào)用就成空的了呢,Vue也已經(jīng)掛載完成了啊。
resolve
一番氣急敗壞的debug后,在header.js的$(function())加上了一句console.log('ok'),結(jié)果瀏覽器輸出了倆ok。短時(shí)間大腦的高速運(yùn)轉(zhuǎn)后,我發(fā)現(xiàn)了問(wèn)題的所在:
webpack打包了兩遍header.js!
所以解決的辦法就是把header_vue = new Vue()改成window.header_vue = new Vue()。別處直接用就行了。
尾話
目前沒(méi)搞清楚具體的bug出現(xiàn)原因,正常使用webpack多次引入同一個(gè)export也沒(méi)有出現(xiàn)過(guò)此問(wèn)題。但是肯定是我沒(méi)學(xué)明白,有大牛知道的話麻煩解答解答。
到此這篇關(guān)于vue單文件組件無(wú)法獲取$refs的問(wèn)題的文章就介紹到這了,更多相關(guān)vue單文件無(wú)法獲取$refs 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)折疊展開(kāi)收縮動(dòng)畫(huà)效果
這篇文章主要介紹了vue實(shí)現(xiàn)折疊展開(kāi)收縮動(dòng)畫(huà),通過(guò)scrollHeight實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2023-11-11Vue實(shí)現(xiàn)文字上下滾動(dòng)動(dòng)畫(huà)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何使用Vue實(shí)現(xiàn)超酷文字上下滾動(dòng)動(dòng)畫(huà),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下2024-03-03vue tab滾動(dòng)到一定高度,固定在頂部,點(diǎn)擊tab切換不同的內(nèi)容操作
這篇文章主要介紹了vue tab滾動(dòng)到一定高度,固定在頂部,點(diǎn)擊tab切換不同的內(nèi)容操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07Vue3使用el-table組件實(shí)現(xiàn)分頁(yè)、多選以及回顯功能
這篇文章主要介紹了Vue3使用el-table組件實(shí)現(xiàn)分頁(yè)、多選以及回顯功能,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-09-09Vue+OpenLayer為地圖添加風(fēng)場(chǎng)效果
這篇文章主要為大家展示了一個(gè)demo,即利用Vue和OpenLayer在地圖上面添加風(fēng)場(chǎng)效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-04-04vue報(bào)錯(cuò)之exports is not defined問(wèn)題的解決
這篇文章主要介紹了vue報(bào)錯(cuò)之exports is not defined問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07vue組件傳值的實(shí)現(xiàn)方式小結(jié)【三種方式】
這篇文章主要介紹了vue組件傳值的實(shí)現(xiàn)方式,結(jié)合實(shí)例形式總結(jié)分析了vue.js組建傳值的三種實(shí)現(xiàn)方式,包括父?jìng)髯?、子傳父及非父子傳?需要的朋友可以參考下2020-02-02Element中table組件按照屬性執(zhí)行合并操作詳解
在我們?nèi)粘i_(kāi)發(fā)中,表格業(yè)務(wù)基本是必不可少的,對(duì)于老手來(lái)說(shuō)確實(shí)簡(jiǎn)單,家常便飯罷了,但是對(duì)于新手小白如何最快上手搞定需求呢?本文從思路開(kāi)始著手,幫你快速搞定表格2022-11-11