序文 以前は、キャッシュを使用してルートを強調表示していました。すべてのルートをトラバースし、クリックされるたびにルートの現在の値を強調表示し、アクティブな値を割り当てていました。その後、リフレッシュすると動作せず、ハイライトされた部分がデフォルト値の 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 のインストールと設定方法のグラフィックチュートリアル
概要バックグラウンド管理システムには多くのフォーム要件があります。データをjson 形式で書き込み、...
目次概要1. store.jsを定義する2. store.js を使用するコンポーネント3. 成果を...
目次導入効果のデモンストレーションは次のとおりです。 MChat コンポーネントのレンダリング: I...
Apache Tika は、さまざまな形式のファイルからファイル タイプを検出し、コンテンツを抽出す...
MySQL 5.7 をインストールするには 2 つの方法があります。1 つはインストーラをダウンロー...
1. エラーの詳細一度、データベース全体のバックアップを手動で実行したときに、次のエラーが発生しまし...
この記事では、シンプルなカレンダー効果を実現するためのJavaScriptの具体的なコードを参考まで...
ページには多くのコントロール (要素またはタグ) があります。これらのタグをより便利に操作するには、...
コードを見てみましょう:コードをコピーコードは次のとおりです。 < !DOCTYPE html...
1.docker search mysql查看mysql版本 2. docker pull mysq...
JavaScript ではオブジェクトを走査する順序は固定されていないと聞いたことがある人もいるかも...
この記事では、CSSの透明な境界線の背景クリップの素晴らしい使い方を主に紹介し、みんなと共有し、自分...
explain はクエリ実行プラン情報を取得するために使用されます。 1. 文法次のように、sele...
CSS変数の知識を使って、追加したコードとコメントを直接投稿します <!DOCTYPE htm...
目次1. コード分析2. ソースコードソースコード1. コード分析1.1 HTMLコード分析 <...