最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue Tab切換以及緩存頁面處理的幾種方式

 更新時間:2019年11月05日 15:00:54   作者:李大雷  
這篇文章主要介紹了vue Tab切換以及緩存頁面處理的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

相信tab切換對于大家來說都不算陌生,后臺管理系統(tǒng)中多會用到。如果不知道的話,可以看一下瀏覽器上方的標簽頁切換,大概效果就是這樣。

1.如何切換

使用動態(tài)組件,相信大家都能看懂(部分代碼省略)

//通過點擊就可以實現(xiàn)兩個組件來回切換
<button @click="changeView">切換view</button>
<component :is="currentView"></component>

import pageA from "@/views/pageA";
import pageB from "@/views/pageB";

computed: {
 currentView(){
   return this.viewList[this.index];
 }
},
 methods: {
 changeView() {
  this.index=(++this.index)%2
 }
}
注:這個多用于單頁下的幾個子模塊使用,一般切換比較多使用下面的路由

使用路由(這個就是配置路由的問題了,不作贅述)2.動態(tài)生成tab

一般UI框架給我們的tab切換都像是上面的那種,需要自己寫入幾個tab頁之類的配置。但是我們?nèi)绻胍ㄟ^點擊左邊的目錄來生成一個tab頁并且可以隨時關閉呢(如下圖)?

只需要給路由一個點擊事件,把你的路由地址保存到一個列表,渲染成另一個平鋪的tab目錄即可

假設你的布局是這樣,左邊的目錄,上邊的tab,有字的是頁面

<menu>
 <menu-item v-for="(item,index) in menuList" :key="index" @click="addToTabList(item.path)">
  <router-link :to="item.path">{{item.name}}</router-link>
 <menu-item>
</menu>
<template>
 <menu class="left"/>//menu代碼部分如上
 <div class="right">
  <tab-list>
   <tab-item v-for="(item,index) in tabList" :key="index">
    <router-link :to="item.path">{{item.name}}</router-link>
    <icon class="delete" @click="deleteTab"></icon>
   </tab-item>
  </tab-list>
  <page-view>
   <router-view></router-view>//這里是頁面展示
  </page-view>
 </div>
</template>
以上代碼并非實際代碼,只提供一個大概的思路。至于addToTabListdeleteTab怎么做就是數(shù)組方法的簡單pushsplice操作了。為了效果好看,我們可能還需要一些tabactive樣式,這里不作演示。

3.緩存組件

僅僅是做tab切換,遠遠是不夠的,畢竟大家想要tab頁就是要來回切換操作,我們需要保存他在不同tab里操作的進度,比如說填寫的表單信息,或者已經(jīng)查詢好的數(shù)據(jù)列表等。
那么我們要怎么緩存組件呢?
只需要用到vue中的keep-alive組件

3.1 keep-alive

  • <keep-alive>是Vue的內(nèi)置組件,能在組件切換過程中將狀態(tài)保留在內(nèi)存中,防止重復渲染DOM。
  • <keep-alive> 包裹動態(tài)組件時,會緩存不活動的組件實例,而不是銷毀它們。
  • <keep-alive><transition>相似,只是一個抽象組件,它不會在DOM樹中渲染(真實或者虛擬都不會),也不在父組件鏈中存在,比如:你永遠在 this.$parent 中找不到 keep-alive 。
注:不能使用keep-alive來緩存固定組件,會無效
//無效
<keep-alive>
 <my-component></my-component>
</keep-alive>

3.2 使用

3.2.1 老版本vue 2.1之前的使用

<keep-alive>
  <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

需要在路由信息里面設置router的元信息meta

export default new Router({
 routes: [
  {
   path: '/a',
   name: 'A',
   component: A,
   meta: {
    keepAlive: false // 不需要緩存
   }
  },
  {
   path: '/b',
   name: 'B',
   component: B,
   meta: {
    keepAlive: true // 需要被緩存
   }
  }
 ]
})

3.2.2 比較新而且簡單的用法

直接緩存所有組件/路由

<keep-alive>
  <router-view/>
</keep-alive>

<keep-alive>
  <component :is="view"></component>
</keep-alive>

使用include來處理需要緩存的組件/路由

include有幾種用法,可以是數(shù)組,字符串用標點隔開,也可以是正則,使用正則的時候需要使用v-bind來綁定。
<keep-alive include="['a','b']">//緩存name為a,b的組件
<keep-alive include ="a,b">//緩存name為a,b的組件
<keep-alive :include="/^store/">//緩存name以store開頭的組件
  <router-view/>//可以為router-view
  <component :is="view"></component>//也可以是動態(tài)組件
</keep-alive>

使用exclude來排除不需要緩存的路由

include正好相反,在exclude里的組件不會被緩存。用法類似,不作贅述

3.2.3 一種比較奇怪的情況

當頁面跳轉(zhuǎn)方式有A->CB->C兩種,但是我們從A到C的時候,不需要緩存,從B到C的時候需要緩存。這時候就要用到路由的鉤子結(jié)合老版本用法來實現(xiàn)了。

export default {
 data() {
  return {};
 },
 methods: {},
 beforeRouteLeave(to, from, next) {
  to.meta.keepAlive = false; // 讓下一頁不緩存
  next();
 }
};
export default {
 data() {
  return {};
 },
 methods: {},
 beforeRouteLeave(to, from, next) {
  // 設置下一個路由的 meta
  to.meta.keepAlive = true; //下一頁緩存
  next();
 }
};

3.3 緩存組件的生命周期函數(shù)

緩存組件第一次打開的時候,和普通組件一樣,也需要執(zhí)行created, mounted等函數(shù)。
但是在被再次激活被停用時,這幾個普通組件的生命周期函數(shù)都不會執(zhí)行,會執(zhí)行兩個比較獨特的生命周期函數(shù)。

activated
這個會在緩存的組件重新激活時調(diào)用

deactivated
這個會在緩存的組件停用時調(diào)用

結(jié)語

這個是很基礎的知識,放在筆記里很久了,不過之前記得有點亂,今天拿出來抖一下塵~

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Vue3項目打包后部署到服務器 請求不到后臺接口解決方法

    Vue3項目打包后部署到服務器 請求不到后臺接口解決方法

    在本篇文章里小編給大家整理了關于Vue3項目打包后部署到服務器 請求不到后臺接口解決方法,有需要的朋友們可以參考下。
    2020-02-02
  • vue-resource 攔截器使用詳解

    vue-resource 攔截器使用詳解

    本篇文章主要介紹了vue-resource 攔截器使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 使用vue3實現(xiàn)element-plus的主題切換效果

    使用vue3實現(xiàn)element-plus的主題切換效果

    Vue3 Element Plus是一個基于Vue 3框架的UI組件庫,它是由Element UI團隊開發(fā)的升級版本,Element Plus延續(xù)了Element UI簡潔、高效的風格,并引入了一些新的設計語言和技術(shù),如響應式API和更好的性能優(yōu)化,本文給大家介紹了如何使用vue3實現(xiàn)element-plus的主題切換效果
    2024-12-12
  • Vue2.0腳手架搭建

    Vue2.0腳手架搭建

    這篇文章介紹了使用vue-cli搭建腳手架的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-03-03
  • vue實現(xiàn)輪播圖的多種方式

    vue實現(xiàn)輪播圖的多種方式

    這篇文章給大家介紹了vue實現(xiàn)輪播圖的多種方式,文中給出了四種實現(xiàn)方式,并通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,感興趣的朋友可以參考下
    2024-02-02
  • Vue利用watch偵聽器模擬實現(xiàn)翻譯功能

    Vue利用watch偵聽器模擬實現(xiàn)翻譯功能

    本期將會介紹 Vue 中的 watch 偵聽器,它語法是怎么樣的呢?具有怎樣的功能呢?最后用模擬實現(xiàn)百度翻譯來更進一步練習 watch 偵聽器,需要的朋友可以參考下
    2024-11-11
  • Vue微信項目按需授權(quán)登錄策略實踐思路詳解

    Vue微信項目按需授權(quán)登錄策略實踐思路詳解

    這篇文章主要介紹了Vue微信項目按需授權(quán)登錄策略實踐思路詳解,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • Vue中的父子組件傳值.sync

    Vue中的父子組件傳值.sync

    這篇文章主要介紹了Vue中的父子組件傳值.sync,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 基于Vue3實現(xiàn)一個小相冊詳解

    基于Vue3實現(xiàn)一個小相冊詳解

    這篇文章主要為大家詳細介紹了如何基于Vue3實現(xiàn)一個小相冊效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-12-12
  • vue3中onUnmounted使用詳解

    vue3中onUnmounted使用詳解

    在Vue3中,onUnmounted是一個生命周期鉤子,它會在組件實例被卸載(unmounted)和銷毀之前被調(diào)用,本文給大家介紹vue3中onUnmounted使用詳解,感興趣的朋友跟隨小編一起看看吧
    2024-03-03

最新評論

石景山区| 儋州市| 灌阳县| 陇川县| 垣曲县| 桓仁| 通化市| 故城县| 新郑市| 莱西市| 河南省| 五原县| 乃东县| 长沙市| 勃利县| 巴林左旗| 洛扎县| 建宁县| 东乡族自治县| 通山县| 肥乡县| 清新县| 高尔夫| 花垣县| 高碑店市| 陆川县| 承德市| 西峡县| 皋兰县| 凉城县| 寻乌县| 武隆县| 邮箱| 洪湖市| 临桂县| 澜沧| 封丘县| 年辖:市辖区| 柏乡县| 松江区| 东明县|