1. 問題の説明調整センターでは、最後の 2 つの便利なナビゲーション メニューが同じモジュールで、レベル 3 以上のメニューである場合、2 つの便利なタブを切り替えるときに正常にキャッシュできます。ただし、最後のタブが削除されると、もう一方のタブ ページはキャッシュされなくなります。 2. 原因分析デフォルトでは、keep-alive は 2 レベルのキャッシュをサポートしており、レベル 3 以上のページのキャッシュは無効です。以前の処理方法は、ルートの変更を監視した後、現在のルート識別子と親識別子を一緒に保存します。複数のページが存在する場合、いずれかのページを閉じると、自分自身と親の識別子も削除されます。このとき、配列には親識別子がないため、同じレベルの他のページのキャッシュは無効になります。 3. 解決策ルーティング構成テーブル内のすべてのルートを 2 つの操作に分割します。1 つはメニュー表示用にそのまま保持すること、もう 1 つはルーティング構成テーブルをフラット化してすべてのルートをセカンダリ ルートに処理し、keep-alive がデフォルトでキャッシュをサポートできるようにすることです。 4. 処理完全なルーティング構成を取得する 定数モジュール = [] files.keys().forEach(キー => { const filesObj = files(キー).default || files(キー) Object.keys(filesObj).forEach(keyOne => { modules.push(filesObj[keyOne]) }) }) 操作によりルーティング構成が完了しました export const menuList = modules; // メニュー表示用 const routerList = formatTwoStageRoutes(formatFlatteningRoutes(modules)); // ルートを 2 段階ルートにフラット化します const ルーター = 新しい VueRouter({ スクロール動作: () => ({ y: 0 }), モード: '履歴'、 ベース: process.env.BASE_URL、 ルート: routerList, //ルーティング設定項目でフラット化されたルートを使用する}) 平坦化法 エクスポートconst formatFlatteningRoutes = (routesList => { routeList.length <= 0 の場合、routesList を返します。 リストを [] にします。 ルートリスト.forEach(v => { if(v.path === '/') { // 初期レイアウトとホームページを追加するために使用されます。他のセンター構成は、レイアウトと親ノードをフィルターし、子のルートのみを保持します list.push(v); リスト = list.concat(formatFlatteningRoutes(v.children)) } そうでない場合 (v.children && v.children.length > 0) { リスト = list.concat(formatFlatteningRoutes(v.children)) } それ以外 { リストをプッシュします。 } }) リストを返します。 }) エクスポート const formatTwoStageRoutes = list => { if (list.length <= 0) の場合はリストを返します。 定数ルーターリスト = []; リスト.forEach(v => { (v.path === '/')の場合{ ルータリスト.push({ コンポーネント: v.component、 名前: v.name、 パス: v.path, リダイレクト: 動詞、 メタ: v.meta, 子供たち: [] }) } そうでない場合 (v.path === '/login' || v.path === '/showcasePage') { // レイアウト設定を必要としないページ routerList.push(v) } それ以外 { ルーターリスト[0].children.push({ ...v }) } }) routerList を返します。 } Vue のキープアライブ マルチレベル ルーティング キャッシュ問題に関するこの記事はこれで終わりです。Vue キープアライブ マルチレベル ルーティング キャッシュに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: MySQL マルチインスタンス構成のアプリケーションシナリオ
序文Linux カーネルでは、netfilter は、パケット フィルタリング、ネットワーク アドレ...
区切り文字なしの文字列抽出質問の要件データベース内のフィールド値:実装効果: 1行のデータを複数行に...
この記事の例では、テーブルを動的に生成するjsの具体的なコードを参考までに共有しています。具体的な内...
この間、プロジェクトに取り組んでいるときに、データ間の接続が非常に複雑なモジュールに遭遇しました。テ...
フロントエンド開発を行っている初心者の学生を多く見かけますが、彼らの効率は比較的遅いです。常にコード...
目次1.重複排除を設定する2. 重複を削除するには、2 回の for ループを使用します。 3. i...
最近、製品部門のユーザーエクスペリエンスチームの学生は、アライアンス環境における広告に関する一連の研...
目次1. コンセプト1.1 定義1.2 デコレータファクトリー1.3 デコレータの組み合わせ1.4 ...
基礎1. スキャフォールディングを使用してプロジェクトを作成し、開始する1.1 足場を設置する: n...
ページを作成するときに、ページの見栄えを良くするために、背景画像を設定する必要があることがよくありま...
目次序文小道具コンテクスト州要約する序文最新のフロントエンド フレームワークはすべて、コンポーネント...
この記事では、インターフェースのスライド効果を実現するためのVueの具体的なコードを例として紹介しま...
序文この記事では主に、MySQL のインデックスとビューの使用方法と違いを紹介し、参考と学習のために...
目次無イメージの創造と混乱Noneオブジェクトをクリーンアップする方法トリムミラーコンテナで使用され...
構造とパフォーマンスの紹介HTML 構造、CSS 表現、JavaScript 動作。Web ページの...