序文 以前は、キャッシュを使用してルートを強調表示していました。すべてのルートをトラバースし、クリックされるたびにルートの現在の値を強調表示し、アクティブな値を割り当てていました。その後、リフレッシュすると動作せず、ハイライトされた部分がデフォルト値の 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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Kali Linux システムのバージョンを確認する方法
>>: MySQL Community Server 8.0.11 のインストールと設定方法のグラフィックチュートリアル
はじめに: MySQL を使用してテーブルを作成する場合、通常は自動インクリメント フィールド (A...
目次前面に書かれた序文ChromeプラグインとはChrome プラグイン開発を学ぶことの意義は何です...
目次1. ラベルステートメントの紹介2. ラベルステートメントの使用序文:日常の開発では、プログラム...
目次序文スタイル機能説明初期化コードイベントリスナーの追加リスナーツールバーモニターテーブル行ツール...
簡単です。チュートリアルを見てください。ブロガー1. まずdockerを起動するサービスdocker...
MySQL のインストールについてはインターネット上に多くの記事がありますが、今日ノート PC にイ...
私は最近、会社で統計レポートの開発に関わるプロジェクトに取り組んでいました。データの量が比較的多かっ...
1. ワイヤレスPowerShell を実行し、次のコマンドを入力します。 install-wind...
MySQL で中国語を入力すると、次のエラーが発生します。エラー 1366: 1366: 行 1 の...
目次序文: 1. イベント ループとタスク キューの理由: 2. イベントループメカニズム: 3. ...
序文MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーショ...
ref 定義:要素またはサブコンポーネントの参照情報を登録するために使用されます。参照情報は、親コン...
yumコマンドYum (フルネームは Yellow dog Updater, Modified) ...
今日仕事中に、ビジネス側から次のような質問をされました。テーブルがあり、一意のフィールドを追加する必...
IE6 で試してみたところ、ツールバーが表示されました。オプションに「イメージ ツールバーを有効にす...