序文 以前は、キャッシュを使用してルートを強調表示していました。すべてのルートをトラバースし、クリックされるたびにルートの現在の値を強調表示し、アクティブな値を割り当てていました。その後、リフレッシュすると動作せず、ハイライトされた部分がデフォルト値の 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 のインストールと設定方法のグラフィックチュートリアル
前回の記事「1行のCSSコードの魅力」では、たった1行のCSSコードで生成できる美しい(奇妙な感じと...
フォームを送信するときに、送信前に追加のパラメータが追加される状況が発生する場合があります。この問題...
この記事では、電子商取引プラットフォームで商品の詳細を表示する一般的な例を紹介します。たとえば、ある...
クリック後にポップアップボックスを実現し、上下左右に中央揃えし、灰色の透明マスクを追加してウィンドウ...
目次解決された主な問題1. バックエンドから返され、バックエンドに送信されるデータは、次の形式になり...
背景PNG 画像は jpg 画像よりも多くのストレージスペースを占有しますが、PNG 画像の品質は大...
memcachedをインストールする yum インストール -y memcached #memcac...
次のコードは、MySQL が 1 つのテーブルのデータに基づいて別のテーブルのいくつかのフィールドを...
0. 環境この記事のオペレーティング システム: CentOS 7.2.1511 x86_64 My...
TW のメインテキスト ページは、以前は小さなモニターと低解像度のユーザーを考慮して幅が 850 ピ...
目次序文1.1 機能1.2 要素の可視性を制御する方法1.3 初期レンダリングの比較1.4 スイッチ...
序文最近、小さなプログラムを開発しているときに、このような問題に遭遇しました。ユーザーが認証をクリッ...
背景インターフェイス ドメイン名はハードコードされておらず、動的に取得されます。具体的な実装は、静的...
初期のコンピュータでは ASCII 文字しか使用できませんでしたが、コンピュータのアプリケーションの...
起動時に Ubuntu デュアル システムが停止する問題の解決方法 (Ubuntu 16.04 およ...