このようなタグはどのように記述すればよいでしょうか?アイデアを要約すると次のようになります。 1. ページレンダリングページ 1 は、配列をループすることでストアに配列を格納できることを示しています。 (1) 格納する前に、重複したデータがあるかどうかを判断します。重複したデータがある場合は、最初に削除してから追加します。 addTag: (状態、タグ) => { const { fullPath, path, meta, query } = タグ if (tag.path === '/login') { 偽を返す } const findIndex = state.tags.findIndex(item => item.path === tag.path) console.log(インデックスを検索) (検索インデックス >= 0)の場合{ state.tags.splice(findIndex, 1, { fullPath, パス, メタ, クエリ }) } それ以外 { state.tags.push({ fullPath, パス, メタ, クエリ }) } }, 2 このルート追加メソッドがトリガーされ、リスニングルートが入ると、このメソッドが呼び出され、現在の this インスタンスにルートオブジェクトが渡されます。 計算: { 現在のルート() { これを返します。$route }, }, 時計: $ルート: { ハンドラ(val) { if (val.name) { タグを追加します() } }, // 深い監視監視 deep: true } }, 方法:{ タグを追加します(){ //this.$store.dispatch は最初にアクションに送信され、ミューテーション内のメソッドを非同期的に処理し、状態の tags 値を変更します。this.$store.dispatch('user/addTag', this.currentRoute) },} この時点で、タグ配列にはすでに値が入っています。デフォルトの色は白なので、ページ上では見えません。次のステップは、選択したタグを強調表示することです。 <span v-for="(tag, index) タグ内" :key="index" class="tag-span"> <elタグ :closable="閉じることができる" :effect="setTagColor(タグ)" @close="タグを閉じる(タグ)" @click="toTagRoute(タグ)" > {{ tag.meta.title }} </el-tag> </span> 方法:{ setTagColor(タグ) { this.currentRoute.path === tag.path ? 'dark' : 'plain' を返します }, } この時点で、タグのレンダリングと選択は完了です。 2. タグを切り替える方法:{ toTagRoute(タグ) { this.$router.push({ パス: tag.fullPath || tag.path }) }, } 3. タグを削除する1 配列であるため、ユーザーがどれを削除したかを判断することはできません。そのため、ユーザーが現在選択しているタグを見つけるには、トラバースする必要があります。次にそれを削除し、ストア内の値を更新します。 方法:{ 閉じるタグ(タグ) { console.log(タグ、4444) this.$store.dispatch('user/delTag', タグ) this.toLastTagRouter(this.$store.state.user.tags)//削除する前のタグを強調表示します }, toLastTagRouter(タグ) { //ここで渡されたタグは削除されるため、splice==》を使用して元の配列を変更することはできません。slice==》は元の配列を変更せず、配列の最後の要素を取得します。const latestView = tags.slice(-1)[0] //タグ配列の最後の要素 console.log(latestView) (latestView !== 未定義 && latestView.path !== 未定義)の場合 { const { fullPath, meta, path, query } = latestView this.$router.push({ fullPath, meta, path, query }) } }, } //アクション delTag({ コミット }, タグ) { commit('delTag', タグ) }, //突然変異 delTag: (状態、タグ) => { //entries() オブジェクトはトラバース可能な配列 [0, {name: a, age: '20'}] になります //ForEachとmapもここで使用できます for (const [i, v] of state.tags.entries()) { (v.path === tag.path) の場合 { 状態.タグ.スプライス(i, 1) 壊す } } }, すべてのタグを削除 方法:{ すべてのタグを閉じる() { // すべてのタグを閉じて、1 つのタグだけを残します。this.$store.dispatch('user/delAllTags') const { fullPath, meta, path, query } = this.$store.state.user.tags[0] // 残りのタグルートにジャンプします this.$router.push({ fullPath, meta, path, query }) }, } //アクション delAllTags({ コミット }) { コミット('delAllTags') }, //突然変異 delAllTags: (状態) => { 状態タグの連結(1, 状態タグの長さ) }, これで、vue+element でページのトップタグを実装する方法についての記事は終了です。vue element トップタグに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQLが基礎データ構造としてB+ツリーを使用する理由
//文法: @media mediatype and | not | only (メディア機能) ...
ポートを使用して MySQL をインストールした後、しばらくすると /var の容量が不足しているこ...
<br /> この記事は allwebdesignresources.com から Ra...
目次背景: Nginx スムーズ アップグレード ソリューションフォールバック手順要約する背景:負荷...
今日は、企業の実際の本番環境でよく遭遇する、Nginx を新しいバージョンにアップグレードし、古いバ...
序文通常、ファイル内の特定の行を削除したい場合は、まずファイルを開き、削除する内容を見つけて、これら...
Web フロントエンド開発のプロセスでは、UI デザイナーはグラデーション テキストを使用したデザイ...
目次序文記述子getとsetの詳細な説明オブジェクトの属性の乗っ取りオブジェクトのすべてのプロパティ...
HTML ノードの追加と削除の簡単な例 HTML ノードの追加と削除の簡単な例<input t...
現在、コンピュータモニターの画面解像度はますます高くなる傾向にありますが、携帯電話などのモバイルデバ...
reactプロジェクトで非常に一般的なシナリオ: const [watchValue、setWatc...
コンピュータに初めて MySQL をインストールする場合、通常このエラー メッセージは表示されません...
ソケットオプション機能機能: ソケットファイル記述子の属性の読み取りと設定に使用されるメソッド #i...
DB ベンチマーク テストを実行する場合、qps と tps はデータベースのパフォーマンスを測定す...
最近、UTF8 エンコードの中国語 Zen Cart Web サイトをデバッグしているときに奇妙な現...