vue Tab切替及びキャッシュページ処理のいくつかの方法
1.切替方法
ダイナミックコンポーネントを使って、みんなが分かると信じています。
ルートを使う(これはルーティングの設定の問題です。詳細には説明しません)
2.動的生成tab
一般的なUIフレームのtab切り替えは上のようになります。自分でいくつかのtabページに書き込むなどの構成が必要です。しかし、左のディレクトリをクリックしてtabページを作成したいですが、いつでも閉じられますか?
ルートにイベントをクリックして、ルートの住所をリストに保存して、別のフラットなtabディレクトリにレンダリングすればいいです。
もしあなたのレイアウトがこのようであるならば、左のディレクトリ、上のtab、字があるのはページです。
3.キャッシュコンポーネント
tabの切り替えをするだけでは足りないです。結局、tabページは往復で操作します。彼が異なるtabで操作する進捗状況を保存する必要があります。例えば、記入したフォームの情報や、すでに調べたデータリストなどです。
コンポーネントはどうやってキャッシュしますか?
vueのkeep-aliveコンポーネントを使うだけです。
3.1 keep-alive<keep-alive>はVueの内蔵コンポーネントであり、コンポーネント切り替え中に状態をメモリに残し、DOMの重複レンダリングを防ぐことができる。 <keep-alive> 動的コンポーネントを包むと、廃棄するのではなく、アクティブでないコンポーネントの例がキャッシュされます。 <keep-alive> を選択します <似ています。ただの抽象的なコンポーネントです。DOMツリーには描画されません。また、親のコンポーネントチェーンにもありません。たとえば、あなたは永遠にいます。 this.$parent 中に見つけられません keep-alive 。 注:keep-aliveで固定部品をキャッシュできないと無効になります。
3.2.1古いバージョンvue 2.1前の使用
すべてのコンポーネント/ルーティングを直接キャッシュします。
includeにはいくつかの用法があります。配列でもいいし、文字列は句読点で区切られてもいいし、正則を使う時はv-bindを使って結合します。
includeとは逆に、excludeでのコンポーネントはキャッシュされません。用法が類似しているので,詳しく述べるまでもない。
3.2.3ちょっと変わった状況です。
ページのジャンプ方式はA->CとB->Cの2種類がありますが、AからCまではキャッシュは不要です。BからCまではキャッシュが必要です。この時はルートのフックを使って古いバージョンの使い方と組み合わせて実現します。
キャッシュコンポーネントが初めて開いた時は、普通のコンポーネントと同じで、createdを実行する必要があります。 mountedなどの関数。
しかし、このいくつかの普通のコンポーネントのライフサイクル関数は、再活性化されても停止されても実行されません。二つの比較的ユニークなライフサイクル関数が実行されます。 activated
これはキャッシュされたコンポーネントが再起動されるときに呼び出します。 deactivated
これはキャッシュされたコンポーネントが停止された時に呼び出します。
以上がevue Tab切替とキャッシュページ処理のいくつかの方法の詳細です。vue Tab切替とキャッシュページ処理に関する資料は他の関連記事に注目してください。
ダイナミックコンポーネントを使って、みんなが分かると信じています。
//
<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
}
}
注:これは1ページの下のいくつかのサブモジュールで使われることが多いです。一般的には切り替えが多いです。下のルートを使います。ルートを使う(これはルーティングの設定の問題です。詳細には説明しません)
2.動的生成tab
一般的なUIフレームのtab切り替えは上のようになります。自分でいくつかのtabページに書き込むなどの構成が必要です。しかし、左のディレクトリをクリックして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>
以上のコードは実際のコードではなく、大体の考えを提供します。addToTabListとdeleteTabはどうすれば配列方法の簡単なpushとsplice操作です。効果のためには、tabのactiveスタイルが必要かもしれません。ここではデモンストレーションを行いません。3.キャッシュコンポーネント
tabの切り替えをするだけでは足りないです。結局、tabページは往復で操作します。彼が異なるtabで操作する進捗状況を保存する必要があります。例えば、記入したフォームの情報や、すでに調べたデータリストなどです。
コンポーネントはどうやってキャッシュしますか?
vueのkeep-aliveコンポーネントを使うだけです。
3.1 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のメタ情報を設定する必要があります。
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にはいくつかの用法があります。配列でもいいし、文字列は句読点で区切られてもいいし、正則を使う時は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>//
</keep-alive>
excludeを使用してキャッシュ不要なルーティングを排除する。includeとは逆に、excludeでのコンポーネントはキャッシュされません。用法が類似しているので,詳しく述べるまでもない。
3.2.3ちょっと変わった状況です。
ページのジャンプ方式はA->CとB->Cの2種類がありますが、AからCまではキャッシュは不要です。BからCまではキャッシュが必要です。この時はルートのフックを使って古いバージョンの使い方と組み合わせて実現します。
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キャッシュコンポーネントのライフサイクル関数キャッシュコンポーネントが初めて開いた時は、普通のコンポーネントと同じで、createdを実行する必要があります。 mountedなどの関数。
しかし、このいくつかの普通のコンポーネントのライフサイクル関数は、再活性化されても停止されても実行されません。二つの比較的ユニークなライフサイクル関数が実行されます。
以上がevue Tab切替とキャッシュページ処理のいくつかの方法の詳細です。vue Tab切替とキャッシュページ処理に関する資料は他の関連記事に注目してください。