亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解決vue的component標簽渲染問題

 更新時間:2022年03月29日 16:50:07   作者:撿垃圾的小白  
這篇文章主要介紹了解決vue的component標簽渲染問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

component標簽渲染問題

最近遇到一個問題,就是通過LoadJs方法加載的組件怎么通過component實現(xiàn)熱加載問題

vue的component標簽是個虛擬dom,在真實dom樹上需要vue進行渲染,顯示。而我最近遇到的問題,我通過LoadJS方法,從A項目讀取B項目的對象,頁面并已組件的形式渲染到A項目頁面上,組件沒法渲染。

我第一反應(yīng) 是this.$forceUpdate(),渲染一下就是,可是并沒有成功。

然后想到一個問題VUE如何識別加載虛擬DOM和如何識別路由里綁定的頁面?import對象和require對象有什么區(qū)別,什么時候用

想了一堆這類的問題,實際上import和require的區(qū)別,好多文章都有說明,而且解釋的很好。個人看來最大的區(qū)別就是一個是靜態(tài)編譯和一個動態(tài)編譯。也就是一個腳本運行完后編譯。

所以我這里應(yīng)該是動態(tài)編譯,因為外部Js文件在是一個blob對象,無法根據(jù)import,指定路徑,運行時候在訪問對應(yīng)的Js文件。也就是這個路徑是個虛擬的,無法真實找到的時候,不要用import。

vue如何識別import對象和require對象

  • require是CommonJs的語法(AMD規(guī)范引入方式),CommonJs的模塊是對象。
  • import是es6的一個語法標準(瀏覽器不支持,本質(zhì)是使用node中的babel將es6轉(zhuǎn)碼為es5再執(zhí)行,import會被轉(zhuǎn)碼為require),es6模塊不是對象
  • require是運行時加載整個模塊(即模塊中所有方法),生成一個對象,再從對象上讀取它的方法(只有運行時才能得到這個對象,不能在編譯時做到靜態(tài)化),理論上可以用在代碼的任何地方
  • import是編譯時調(diào)用,確定模塊的依賴關(guān)系,輸入變量(es6模塊不是對象,而是通過export命令指定輸出代碼,再通過import輸入,只加載import中導(dǎo)的方法,其他方法不加載),import具有提升效果,會提升到模塊的頭部(編譯時執(zhí)行)
  • exportimport可以位于模塊中的任何位置,但是必須是在模塊頂層,如果在其他作用域內(nèi),會報錯

這算解決了一個問題,可是component的Is屬性時可以識別require和import對象,我直接丟進去,可是還是不行。

然后注意到一個點,VUE的生命周期!

然后發(fā)現(xiàn)我實在mounted導(dǎo)入的對象。。。。。。

提醒一下自己和看到的人,請不要在mounteds使用require和import,我改到created里面執(zhí)行函數(shù)就可以。理論來說beforeCreated和beforeMounted也可以使用。未嘗試過。

還有提醒一下,思考一個問題,不要鉆牛角尖,換個思路,說不定豁然開朗,就像我這個問題。其實主要問題就是,導(dǎo)入對象的時期和導(dǎo)入的方法選擇,而不是渲染。

component組件嵌套,導(dǎo)致頁面重復(fù)渲染,重復(fù)請求的bug

因詳情頁面,有多個tab選項卡考慮頁面多處重復(fù)使用,而且有多個頁面組成,最終決定使用 組件方式來引用頁面。

因 項目采用的UI組件是 element-ui,剛好看到有一個 樣式很類似于 tab選項卡,就采用了 element的 tabs組件,可是 沒想到問題就是出現(xiàn) 這兒。

在這里插入圖片描述

錯誤代碼

<el-tabs class="header-tabs" v-model="activeName" @tab-click="handleClick">
   <el-tab-pane
     v-for="item of tabs"
     :key="item.id"
     :label="item.label"
     :name="item.id"
     :component="item.component"
     lazy
     >
      <keep-alive exclude="ContentManage">
          <component :is="currentComponent" :customeroid="agencyid"></component>
      </keep-alive>
     </el-tab-pane>
</el-tabs>

因為上述采用了 tabs選項卡,而且也使用 v-for循環(huán)(沒辦法,主要是 tabs是動態(tài)的),導(dǎo)致 每個頁面不僅沒有辦法 緩存,反而 一直重復(fù)發(fā)送請求。自己百度了好久,最后沒辦法尋求幫助,在大佬們 遠程幫助下 最終發(fā)現(xiàn)的是 tabs下的 v-for導(dǎo)致。

因為 component 寫在v-for循環(huán)中,每次循環(huán)都會 創(chuàng)建一個 對象,導(dǎo)致創(chuàng)建很多的組件,點擊一次tabs 循環(huán)后的 所有的 component都 發(fā)送了請求,每次點擊一次后,都會減少一次請求(因為 keep-alive緩存的問題)。

最終解決的方法,不在 element-ui的 tabs組件,自己手寫頁面,反正樣式不復(fù)雜。

正確代碼

<ul class="tabs-ul">
    <li
        v-for="(item) in currentTabs"
        :key="item.id"
        :class="{ active: tabSelect === item.id }"
        @click.prevent="changetabs(item.id)"
        >
        {{ item.label }}
    </li>
</ul>
<keep-alive exclude="ContentManage">
    <component :is="currentComponent" :customeroid="agencyid"></component>
</keep-alive>

這樣的就可以避免創(chuàng)建多個組件,從而不在出現(xiàn) 重復(fù)發(fā)送請求的bug。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue頁面使用阿里oss上傳功能的實例(一)

    vue頁面使用阿里oss上傳功能的實例(一)

    本篇文章主要介紹了vue頁面使用阿里oss上傳功能的實例(一),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 關(guān)于Vue-cli3煩人的eslint問題

    關(guān)于Vue-cli3煩人的eslint問題

    這篇文章主要介紹了關(guān)于Vue-cli3煩人的eslint問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 關(guān)于vant折疊面板默認展開問題

    關(guān)于vant折疊面板默認展開問題

    這篇文章主要介紹了關(guān)于vant折疊面板默認展開問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue頁面切換和a鏈接的本質(zhì)區(qū)別詳解

    Vue頁面切換和a鏈接的本質(zhì)區(qū)別詳解

    今天小編就為大家分享一篇Vue頁面切換和a鏈接的本質(zhì)區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue自定義全局組件(自定義插件)的用法

    vue自定義全局組件(自定義插件)的用法

    這篇文章主要介紹了vue自定義全局組件(自定義插件)的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • vue parseHTML函數(shù)源碼解析 AST預(yù)備知識

    vue parseHTML函數(shù)源碼解析 AST預(yù)備知識

    這篇文章主要為大家介紹了vue parseHTML函數(shù)源碼解析 AST預(yù)備知識示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • vue實現(xiàn)el-table點選和鼠標框選功能的方法

    vue實現(xiàn)el-table點選和鼠標框選功能的方法

    在Vue中我們經(jīng)常需要處理表格數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于vue實現(xiàn)el-table點選和鼠標框選功能的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • vue filter 完美時間日期格式的代碼

    vue filter 完美時間日期格式的代碼

    這篇文章主要介紹了vue filter 完美時間日期格式的方法,文中給大家提到了vue filter方法-時間格式化 的代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-08-08
  • vuex頁面刷新后數(shù)據(jù)丟失的方法

    vuex頁面刷新后數(shù)據(jù)丟失的方法

    這篇文章主要介紹了vuex頁面刷新后數(shù)據(jù)丟失的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Vue移動端項目實現(xiàn)使用手機預(yù)覽調(diào)試操作

    Vue移動端項目實現(xiàn)使用手機預(yù)覽調(diào)試操作

    這篇文章主要介紹了Vue移動端項目實現(xiàn)使用手機預(yù)覽調(diào)試操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評論