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

推薦する

MySQLの自動増分IDについて知っておくべきこと

はじめに: MySQL を使用してテーブルを作成する場合、通常は自動インクリメント フィールド (A...

Chrome プラグイン (拡張機能) 開発ガイド (完全デモ)

目次前面に書かれた序文ChromeプラグインとはChrome プラグイン開発を学ぶことの意義は何です...

js タグ構文の使用法の詳細

目次1. ラベルステートメントの紹介2. ラベルステートメントの使用序文:日常の開発では、プログラム...

Layuiテーブル行のデータを動的に編集する

目次序文スタイル機能説明初期化コードイベントリスナーの追加リスナーツールバーモニターテーブル行ツール...

Docker に Tomcat をインストールし、Springboot プロジェクトの WAR パッケージをデプロイする方法

簡単です。チュートリアルを見てください。ブロガー1. まずdockerを起動するサービスdocker...

MySql 5.6.36 64 ビット グリーン バージョンのインストール グラフィック チュートリアル

MySQL のインストールについてはインターネット上に多くの記事がありますが、今日ノート PC にイ...

MySQLは、統計クエリを最適化するために、sum、case、whenを巧みに使用します。

私は最近、会社で統計レポートの開発に関わるプロジェクトに取り組んでいました。データの量が比較的多かっ...

Windows Server のインストール後にワイヤレスとオーディオが機能しない問題を解決する

1. ワイヤレスPowerShell を実行し、次のコマンドを入力します。 install-wind...

MySQL で中国語を入力するときに発生するエラー 1366 の解決方法

MySQL で中国語を入力すると、次のエラーが発生します。エラー 1366: 1366: 行 1 の...

JavaScriptのイベントループの仕組みの分析

目次序文: 1. イベント ループとタスク キューの理由: 2. イベントループメカニズム: 3. ...

MySQLクエリの基本的なクエリ操作の学習

序文MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーショ...

Vue での ref の使用法とデモンストレーション

ref 定義:要素またはサブコンポーネントの参照情報を登録するために使用されます。参照情報は、親コン...

yum の基本的な使い方と例(推奨)

yumコマンドYum (フルネームは Yellow dog Updater, Modified) ...

MySQL alter ignore構文の詳細な説明

今日仕事中に、ビジネス側から次のような質問をされました。テーブルがあり、一意のフィールドを追加する必...

IE イメージ ツールバーを無効にする

IE6 で試してみたところ、ツールバーが表示されました。オプションに「イメージ ツールバーを有効にす...