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 のインストールと設定方法のグラフィックチュートリアル

推薦する

Nginx 仮想ホスト (IP ベース) を構成する 3 つの方法の詳細な説明

Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮想...

HTML における li タグの水平配置の例

ほとんどのナビゲーション バーは、下の図に示すように水平に配置されていますが、これはどのように実現さ...

CSS における px、em、rem、pt の特徴、違い、変換について詳しく説明します。

コンセプト紹介: 1. px (ピクセル):仮想的な長さの単位で、コンピュータ システムのデジタル画...

LinuxシステムにおけるMySQLの一般的な操作コマンド

仕える: # chkconfig --list すべてのシステムサービスを一覧表示する# chkco...

Dockerはコンテナ外のコンテナ内でコマンドを実行します

コンテナ内でコマンドを実行したいが、コンテナに入りたくない場合があります。ではどうすればいいでしょう...

DockerにELKをインストールしてJSON形式のログ分析を実装する方法

ELKとは何ですか? ELK は、Elastic が提供するログ収集およびフロントエンド表示ソリュー...

CSS の両端揃えを実現する div+css レイアウトの 4 つの方法の概要

2 端揃えを実現する div+css レイアウトは、Web ページの組版でよく使用されます。この記事...

シンプルなjQuery + CSSを使用してカスタムタグタイトルツールチップを作成します

導入シンプルな jQuery + CSS を使用して、ブラウザのデフォルトの動作を置き換えるカスタム...

MySQLはテーブル内のフィールドを別のテーブル内のフィールドの値と等しくなるように更新します

以下のように表示されます。 table1 を z として更新し、table2 を zb として結合し...

LinuxベースのApacheウェブサイトサービス構成の詳細な説明

オープンソース ソフトウェアである Apache は、最も広く使用されている Web アプリケーショ...

JavaScriptの詳細な分析と方向の変更方法

目次これ方法オブジェクト内これを隠した厳密モードこれを変更してこれいつものように、まずはコードを見て...

MySQL 最適化ソリューション リファレンス

最適化によって発生する可能性のある問題最適化は必ずしも単純な環境で実行されるわけではなく、実稼働環境...

CSS カウンターとコンテンツの概要

コンテンツ プロパティは CSS 2.1 で導入され、:before および :after 疑似要素...

HTML テーブル マークアップ チュートリアル (43): テーブル ヘッダーの VALIGN 属性

垂直方向では、ヘッダーの配置を上、中央、下に設定できます。基本的な構文構文Top は上、Middle...

Reactは二次的連鎖効果(階段効果)を実現する

この記事では、二次リンク効果を実現するためのReactの具体的なコードを参考までに共有します。具体的...