Vueコンポーネントのルーティング強調表示問題の解決策

Vueコンポーネントのルーティング強調表示問題の解決策

序文

以前は、キャッシュを使用してルートを強調表示していました。すべてのルートをトラバースし、クリックされるたびにルートの現在の値を強調表示し、アクティブな値を割り当てていました。その後、リフレッシュすると動作せず、ハイライトされた部分がデフォルト値の 0 になってしまうことが分かりました。ここでは主にこの問題の解決方法について説明します。

1 つ目は、次のようにクラスを追加することです。

.ルーター{
        フォント: 12px/40px 'Microsoft YaHei';
        背景: ピンク;
        背景: ピンク;
        色: 白;
        カーソル: ポインタ;
        テキスト配置: 中央;
        表示: インラインブロック;
        幅: 40px;
        背景: ピンク;
        &.isActive{
            背景: 青;
            色:赤;
        }
    }

2 番目はパスを監視することです。

元のコードは次のとおりです。

<テンプレート>
<div id="メイン">
    <ul style="height:40px;background:pink;">
        <li class="router" v-for="(item,index) in items" :key="index" style="float:left;" :class="item.isActive?'isActive':''" @click="routerTo(item,index)">
            <span >{{item.name} </span>
        </li>
    </ul>
    <ルータービュー></ルータービュー>
    </div>
    
</テンプレート>
<スクリプト>
    エクスポートデフォルト{
        データ () {
            戻る {
                アクティブインデックス2:'0'、
                アイテム:[
                    {名前:'twoPage',コード:'twoPage',パス:'/twoPage',デフォルトアイコン:require('@/assets/icon/BehaviorRank-default.png'),
                    アクティブアイコン:require('@/assets/icon/behaviorrank-active.png'),isActive:true},
                    {名前:'three',コード:'three',パス:'/three',デフォルトアイコン:require('@/assets/icon/ChannelAllocation-default.png'),
                    activeIcon:require('@/assets/icon/ChannelAllocation-active.png'),isActive:false},
                    {名前:'four',コード:'four',パス:'/four',デフォルトアイコン:require('@/assets/icon/myReport-default.png'),
                    activeIcon:require('@/assets/icon/myReport-active.png'),isActive:false},
                ]、
            }
        },
        方法:{
            ルーターTo(アイテム,インデックス) {
                 (i = 0 とします; i < this.items.length; i++) {
                    this.items[i].isActive=false
                    
                }
                this.items[インデックス].isActive=true
                this.$router.push({name:item.name})
               
            },
        }
    }
</スクリプト>
<スタイル lang='less'>
#主要{
    .ルーター{
        フォント: 12px/40px 'Microsoft YaHei';
        背景: ピンク;
        背景: ピンク;
        色: 白;
        カーソル: ポインタ;
        テキスト配置: 中央;
        表示: インラインブロック;
        幅: 40px;
        背景: ピンク;
        
    }
    .isActive{
            背景: 青;
            色:赤;
        }
    
}

</スタイル>

効果:

ただし、[更新] をクリックすると、強調表示されたインデックスは初期化位置 0 に移動します。

この問題を解決する方法

これを行う 1 つの方法は、sessionStorage をキャッシュすることです。クリックするたびにキャッシュに保存され、更新されて変数から値が取得され、変数に値がない場合はキャッシュから値が取得されます。しかし、入金や出金を繰り返すのが面倒だと感じる人もいるかもしれません。

別の方法は、初期化中にルートを取得し、異なるルートに応じて対応するナビゲーションをアクティブにすることです。

作成された(){
            // var path=window.location.hash.slice(2); // パラメータがない場合でもこれは許容されますが、推奨されません var path=this.$route.name // これは推奨されます console.log(path)
            if(パス){
                (i = 0 とします; i < this.items.length; i++) {
                    this.items[i].isActive=false
                }
                スイッチ(パス){
                    ケース 'twoPage':
                    this.items[0].isActive=true;
                    壊す;
    
                    ケース '3':
                    this.items[1].isActive=true;
                    壊す;
    
                    ケース '4':
                    this.items[2].isActive=true;
                    壊す;
                }
            }
        },

添付ファイル: Vueは現在のルートの特定のコードをクリックするとハイライト表示されます

機能表示:

コンポーネントコード:

ラベルに正確さを追加

.ルーターリンクアクティブ{
 背景: rgba(255,255,255,0.8);
 色: グレー;
 }

<テンプレート>
 <ナビ>
  <ul>
  <li>
   <router-link to="/" exact>ブログ</router-link>
   <router-link to="/AddBlog" exact>ブログを書く</router-link>
  </li>
  </ul>
 </nav>
</テンプレート>
 
<スクリプト>
 エクスポートデフォルト{
  名前: "bolgheader"
 }
</スクリプト>
 
<スタイルスコープ>
 ul{
 リストスタイルタイプ: なし;
 テキスト配置: 中央;
 マージン:0;
 }
 li{
 表示: インラインブロック;
 マージン:0 10px;
 }
 {
 色:rgb(102, 119, 204);
 テキスト装飾: なし;
 パディング:12px;
 境界線の半径: 5px;
 フォントサイズ:20px;
 }
 ナビ{
 背景: #eee;
 パディング: 30px 0;
 下部マージン: 40px;
 }
 .ルーターリンクアクティブ{
 背景: rgba(255,255,255,0.8);
 色: グレー;
 }
</スタイル> 

要約する

これで、vue コンポーネントのルート強調表示問題の解決策に関するこの記事は終了です。vue コンポーネントのルート強調表示に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vuejs トグルナビゲーションバーのハイライト(ルートメニューのハイライト)メソッドの例
  • Vue-routeナビゲーションメニューバーのハイライト設定方法
  • Vue-router セカンダリナビゲーションの切り替えルートとハイライトの実装方法
  • Vueルートのネストされたハイライトの問題の解決策
  • vue2 でのセカンダリルーティングの強調表示の問題と設定方法
  • Vueは現在のルートをクリックして小さな例を強調表示します
  • Vueプロジェクトは、ルートのハイライトに対応するメニュー項目の設定を実装します
  • Vue におけるセカンダリルートのネストとセカンダリルートのハイライトに関する簡単な説明

<<:  Kali Linux システムのバージョンを確認する方法

>>:  MySQL Community Server 8.0.11 のインストールと設定方法のグラフィックチュートリアル

推薦する

Vueダイナミックフォームの詳細な応用

概要バックグラウンド管理システムには多くのフォーム要件があります。データをjson 形式で書き込み、...

Vueのシンプルな状態管理ストアモードを理解する方法

目次概要1. store.jsを定義する2. store.js を使用するコンポーネント3. 成果を...

vue.js ベースの QQ チャット ルーム

目次導入効果のデモンストレーションは次のとおりです。 MChat コンポーネントのレンダリング: I...

Apache Tika を使用してファイルが破損しているかどうかを検出する方法

Apache Tika は、さまざまな形式のファイルからファイル タイプを検出し、コンテンツを抽出す...

MySQL 5.7 インストール MySQL サービスを開始できませんが、サービスはエラーを報告しません

MySQL 5.7 をインストールするには 2 つの方法があります。1 つはインストーラをダウンロー...

SQL Server の完全バックアップに関する珍しいエラーと解決策

1. エラーの詳細一度、データベース全体のバックアップを手動で実行したときに、次のエラーが発生しまし...

シンプルなカレンダー効果を実現する JavaScript コード

この記事では、シンプルなカレンダー効果を実現するためのJavaScriptの具体的なコードを参考まで...

HTML 名、ID、クラス (フォーマット/アプリケーション シナリオ/機能) などの違いの紹介。

ページには多くのコントロール (要素またはタグ) があります。これらのタグをより便利に操作するには、...

IE6 スペースバグ修正方法

コードを見てみましょう:コードをコピーコードは次のとおりです。 < !DOCTYPE html...

JSオブジェクトの走査順序の詳細な説明

JavaScript ではオブジェクトを走査する順序は固定されていないと聞いたことがある人もいるかも...

CSS 透明ボーダー背景クリップマジック

この記事では、CSSの透明な境界線の背景クリップの素晴らしい使い方を主に紹介し、みんなと共有し、自分...

MySQL explain クエリ命令情報の取得原理と例

explain はクエリ実行プラン情報を取得するために使用されます。 1. 文法次のように、sele...

CSS 動的読み込みバー効果のサンプルコード

CSS変数の知識を使って、追加したコードとコメントを直接投稿します <!DOCTYPE htm...

CSS は Apple のスムーズなスイッチ ボタン効果を模倣します

目次1. コード分析2. ソースコードソースコード1. コード分析1.1 HTMLコード分析 <...