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ヘッダータグの使用に関する詳細な説明

推薦する

Ansible を使用した Nginx のバッチ デプロイのサンプル コード

1.1 nginxインストールパッケージとインストールスクリプトをクライアントにコピーし、スクリプト...

Dockerオーバーレイはホスト間のコンテナ相互通信を実現します

目次1. Dockerの設定2. レジストリとネットワークを作成する3. コンテナを起動する環境説明...

TypeScript 3.7 で注目すべき 3 つの新機能について簡単に説明します。

目次序文オプションの連鎖ヌル結合呼び出されていない関数のチェック他の序文TypeScript 3.7...

Vue3 でタイマーコンポーネントをカプセル化する方法

背景一部のショッピング モールの Web ページで商品の詳細を開くと、購入数量を選択するためのカウン...

antd ツリーと親子コンポーネント間の値転送問題について (React のまとめ)

プロジェクト要件: 製品ツリー ノードをクリックすると、そのノードのすべての親ノードが取得され、表に...

MySQL の datetime フィールドの丸め操作

目次序文1. 背景2. シミュレーションテスト3. 結論要約する序文もし私が罠に陥っていなかったら、...

Linux dateコマンドの知識ポイントのまとめ

使用法: date [オプション]... [+フォーマット]または: date [-u|--utc|...

テーブルの動的な色の変更を実現するJavaScript

この記事では、テーブルの動的な色の変更を実現するためのJavaScriptの具体的なコードを参考まで...

MycliはMySQLコマンドライン愛好家にとって必須のツールです

マイクリMyCLI は、自動補完と構文の強調表示を備えた MySQL、MariaDB、および Per...

React Nativeでaxiosを使用してネットワークリクエストを行う方法

フロントエンド開発では、Ajax、jQuery ajax、axios、fetch など、データ要求を...

HTML タグ dl dt dd 使用方法

基本構造:コードをコピーコードは次のとおりです。 <ダウンロード> <dt>...

K3s 入門ガイド - Docker で K3s を実行するための詳細なチュートリアル

k3dとは何ですか? k3d は、Docker で K3s クラスターを実行するための小さなプログ...

MySQLで大きなテーブルをエレガントに削除する方法について簡単に説明します

目次1. 切り捨て操作1.1 MySQL truncate はどのような操作を実行しますか? 1.2...

HTML でのアンカーポイントの適用

アンカーポイントの設定<a name="トップ"></a>...

JS+AJAX は、州、市、地区のドロップダウン リストのリンクを実現します。

この記事では、州、市、地区のドロップダウンリストのリンクを実現するためのJS + AJAXの具体的な...