Vue+elementを使用してページ上部のタグを実装する方法の詳細な説明

Vue+elementを使用してページ上部のタグを実装する方法の詳細な説明

ここに画像の説明を挿入

このようなタグはどのように記述すればよいでしょうか?アイデアを要約すると次のようになります。

1. ページレンダリング

ページ 1 は、配列をループすることでストアに配列を格納できることを示しています。 (1) 格納する前に、重複したデータがあるかどうかを判断します。重複したデータがある場合は、最初に削除してから追加します。
(2)重複のない直接プッシュ

 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)
    },}

この時点で、タグ配列にはすでに値が入っています。デフォルトの色は白なので、ページ上では見えません。次のステップは、選択したタグを強調表示することです。
1要素には設定可能なパラメータがあり、ドキュメントで確認できます。
2 選択されたタグ値が現在のルートで入力されたページと等しいかどうか。一致する場合は true です。

<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 配列であるため、ユーザーがどれを削除したかを判断することはできません。そのため、ユーザーが現在選択しているタグを見つけるには、トラバースする必要があります。次にそれを削除し、ストア内の値を更新します。
2. 現在のタグを削除します。どのタグが強調表示されていますか?これは、配列の最後の要素である、削除されたラベルの前のラベルです。

方法:{
	 閉じるタグ(タグ) {
	      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 をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue Elementui のタグとページ上の他の要素との相互作用の詳細な説明
  • Vue+elementは、3階層のメニューページを表示する操作を実装するために動的読み込みルーティングを使用します。
  • vuex+axios+element-ui はページリクエストの読み込み操作の例を実装します
  • vue-cli3と要素に基づいたログインページの実装
  • Vue+elementはページ印刷機能を実現する

<<:  MySQLが基礎データ構造としてB+ツリーを使用する理由

>>:  HTMLヘッダータグの使用に関する詳細な説明

推薦する

フレックスレイアウトにおけるflex-growとflex-shrinkの計算方法の詳しい説明

CSS のFlex(彈性布局)すると、Web ページのレイアウトを柔軟に制御できます。Flex Fl...

myisamchk および mysqlcheck ツールを使用して破損した MySQL データベース ファイルを迅速に修復する方法

サーバーのデータベース ハード ディスク領域がいっぱいだったため、大量のデータの書き込みに失敗し、「...

HTML タイトルに二重引用符を追加する方法

<a href="https://www.jb51.net/" title...

MySQLの自動増分主キーの実装の詳細な説明

目次1. 自己増分値はどこに保存されますか? 2. 自己価値修正メカニズム3. 自動増分値を変更する...

Element+vueを使用して開始時間と終了時間の制限を実装する

この記事の例では、Element+vueを使用して開始と終了の時間制限を実装するための具体的なコード...

Vue ファースト スクリーン パフォーマンス最適化コンポーネントの知識ポイントの概要

Vue ファースト スクリーン パフォーマンス最適化コンポーネントVue ファースト スクリーン パ...

Ubuntu16.04 インストール mysql5.7.22 グラフィックチュートリアル

VMware12.0+Ubuntu16.04+MySQL5.7.22 インストールチュートリアルの詳...

DockerToolBox ファイルマウント実装コード

docker を使用すると、ファイルをマウントできない場合があります。これは、仮想マシンの共有フォル...

React の調整アルゴリズム Diffing アルゴリズム戦略の詳細な説明

目次アルゴリズム戦略単一ノードの差分配列ノードの差分キー値の使用要件アルゴリズム戦略React の調...

CSS BEM 命名標準の概要 (推奨)

1 BEM命名標準とはBem は、ブロック、要素、修飾子の略語であり、Yandex チームによって...

nginx設定ファイルの場所を見つける方法の詳細な説明

よく知らないサーバーの場合や、かなり前にインストールした場所を忘れてしまった場合、構成ファイルの場所...

MySQL GRANT ユーザー認証の実装

承認とは、ユーザーに特定の権限を付与することです。たとえば、新しく作成したユーザーに、すべてのデータ...

Docker Hubの動作原理と実装プロセスの分析

GitHub が提供するコード ホスティング サービスと同様に、Docker Hub はイメージ ホ...

HTML+CSSは、要素の位置までスクロールして読み込みアニメーション効果を表示します。

要素までスクロールするたびに読み込みアニメーションを追加するにはどうすればよいですか?初期パラメータ...

Linuxの運用と保守、基本的なプロセス管理、リアルタイム監視と制御

目次1. バックグラウンドで実行されるジョブ2. 信号を使用してプロセスを制御する基本的なプロセス管...