Vueの自己ネストツリーコンポーネントの使い方の詳細な説明

Vueの自己ネストツリーコンポーネントの使い方の詳細な説明

この記事では、Vueの自己ネストツリーコンポーネントの使い方を参考までに紹介します。具体的な内容は次のとおりです。

レンダリング


予防

  • コンポーネントはネストされており、名前を定義すると、それがコンポーネント名として定義されます。
  • 単一または複数のユーザーを選択する場合、最上位の親コンポーネントのプロパティが使用されます。コンポーネント内でプロパティを同期的に変更することはできないため、コンポーネント内で変更を受け取るために data を使用して同じタイプの別の値を登録し、update を使用してそれをプロパティに同期的に更新します。
  • コンポーネントを展開してユーザーリストの読み込みを開始します
<テンプレート>
  <ul v-show="isShow" ref="ユーザーツリー">
    <li v-for="(item, idx) in userList" :key="idx​​">
      <div>
        <!-- 複数選択ユーザーツリー -->
        <入力
          クラス="プライマリ"
          タイプ="チェックボックス"
          v-model="selectUsers1"
          :value="item.userId"
          v-show="isCheck"
        />
        <!-- 単一選択ユーザーツリー -->
        <span
          @click="onSelect(アイテム)"
          :style="{
            色: selectUser1 == item.userId ? '赤' : '',
            カーソル: 'ポインタ',
          }"
        >
          <i class="iconfont icon-user"></i> {{ item.userName }}</span
        >
        <!-- ユーザーツリーを展開します -->
        <i
          クラス="iconfont icon-right"
          v-if="item.haveChild"
          @click="アイテムを展開(idx)"
        </i>
      </div>
      <!-- ネストされたユーザーツリー -->
      <ユーザーツリー
        :user-id="item.userId"
        v-if="item.haveChild"
        :is-show.sync="item.isShow"
        :select-user.sync="selectUser1"
        :select-users.sync="selectUsers1"
        :is-check="isCheck"
      </ユーザーツリー>
    </li>
  </ul>
</テンプレート>

<スクリプト> 
エクスポートデフォルト{
  name: "user-tree", // コンポーネント名として定義されます。そうでない場合、自己ネストにより、コンポーネント自体が登録されていないというエラーが報告されます。props: {
    isShow:{//ユーザーリストを展開するかどうか type: ブール値、
      デフォルト: false
    },
    userId:{//現在のユーザーツリーの親ID
      タイプ: 数値、
      デフォルト: 0
    },
    selectUser:{//現在選択されているユーザーID
      タイプ: 数値、
      デフォルト: 0
    },
    selectUsers:{//複数選択ユーザータイプ: 配列、
      デフォルト: 関数() {
        戻る [];
      }
    },
    isCheck:{// 複数のオプションを選択するかどうか type: ブール値、
      デフォルト: false
    }
  },

  データ: () => ({
    userList: [], //ユーザーリスト selectUser1: 1, //ユーザーの単一選択 selectUsers1: [], //ユーザーの複数選択 isLoad: true
  })、
  時計:
    selectUser1 (){// ユーザーを単一選択、現在のレベルは親レベルに同期if (this.selectUser1 != this.selectUser) {
        this.$emit("update:select-user", this.selectUser1);
      }
    },
    selectUser(){// ユーザーの単一選択、現在のレベルは親レベルと同期されますif (this.selectUser1 != this.selectUser) {
        this.selectUser1 = this.selectUser;
      }
    },
    selectUsers1 (){//複数選択、現在のレベルは親レベルに同期if (this.selectUsers1 != this.selectUsers) {
        this.$emit("update:select-users", this.selectUsers1);

      }
    },
    selectUsers (){//複数選択、現在のレベルは親レベルと同期if (this.selectUsers1 != this.selectUsers) {
        this.selectUsers1 = this.selectUsers;
      }
    },
    isShow() {
      if (this.isShow) {
        ユーザーリストを取得します。
      }
    }
  },
  メソッド: {
    onSelect (item){// 単一選択ユーザー this.$emit("update:select-user", item.userId);

    },

    expandItem (idx){//ユーザーツリーを展開します if (this.userList[idx].isShow) {
        this.userList[idx].isShow = false;
      } それ以外 {
        this.userList[idx].isShow = true;
      }

    },
    ユーザーリストを取得する() {
      var リスト = [];
      (var i = 0; i < 10; i++) の場合 {
        var userId = Math.round(Math.random() * 10000);
        リスト.push({
          ユーザーID: ユーザーID、
          ユーザー名: "user-" + ユーザーID、
          haveChild: i % 2, //サブツリーがあるかどうか isShow: false //サブツリーを表示するかどうか });
      }
      this.userList = リスト;


    },

  },
  マウントされた(){

    if (this.userId == 1){//現在の親 userId はルート ユーザー ID なので、ユーザー ツリーを読み込んで展開します this.getUserList(this.userId);
    }
  }
};
</スクリプト>

ツリーコンポーネントの使用

<div>{{ selectUser }}</div>
    <div>
      <span v-for="item in selectUsers" :key="item">【{{ item }}】</span>
    </div>
    <ユーザーツリー
      :ユーザーID="1"
      :is-show="true"
      :select-user.sync="ユーザーを選択"
      :select-users.sync="ユーザーを選択"
      :is-check="true"
</ユーザーツリー>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueはネストされたコンポーネント内の値を取得するためにrefを使用します
  • Vueのキープアライブコンポーネントは、複数レベルのネストされたルートのキャッシュを実装します。
  • Vue フロントエンド開発における階層的にネストされたコンポーネント間の通信の詳細な説明
  • vue keep-alive は、マルチコンポーネントのネストにおいて個々のコンポーネントが存続し、破壊されないことを可能にします。
  • Vue コンポーネントにネストされたサブコンポーネントを実装する例
  • 単一の Vue ページ上の複数のコンポーネントでブラウザ ウィンドウの変更をネストして監視する問題を解決します。
  • form-create を使用して、vue カスタム コンポーネントとネストされたフォーム コンポーネントを動的に生成します。
  • Vue 親子コンポーネントのネストされたサンプルコード
  • Vue マルチレイヤーコンポーネントネストを実装する 2 つの方法 (テスト例)
  • Vue ネストされたコンポーネントパラメータの受け渡し例の共有

<<:  MySQL ビュー管理ビューの例の詳細説明 [追加、削除、変更、クエリ操作]

>>:  シェルスクリプトを使用して CentOS7 に python3.8 環境をインストールする (推奨)

推薦する

CSS カウンターを使用して数字の順序付きリストを美しく表示する方法

Web デザインでは、Web サイトに表示されるデータの構造とコンテンツをユーザーが明確に理解できる...

Nginx ロケーションマッチングルールの例

1. 文法 場所 [=|~|~*|^~|@] /uri/ { ... } 2. 説明上記の構文から、...

VMware Workstation 14 Pro インストール Ubuntu 16.04 チュートリアル

この記事では、VMware Workstation14 ProにUbuntu 16.04をインストー...

CSS の優先順位に関する詳細な紹介

CSS の優先順位について話す前に、CSS とは何か、CSS が何に使用されるのかを理解する必要があ...

MySQL学習データベース操作DML初心者向け詳細解説

目次1. ステートメントを挿入する1.1 行を挿入する1.2 複数行を挿入する1.3 クエリステート...

Dockerコンテナのエクスポートとインポートの例

目次DockerコンテナのエクスポートDockerコンテナのインポ​​ートこの記事では主に、コンテナ...

年末ですが、MySQL パスワードは安全ですか?

序文:年末です。データベースを検査する時期ではないでしょうか?一般的に、検査では、パスワードの複雑さ...

JavaScript オブジェクトを比較する 4 つの方法

目次序文参考比較手動比較浅い比較徹底比較要約する序文JavaScript でプリミティブ値を比較する...

HTML+CSSプロジェクト開発経験概要(推奨)

ここ数日ブログを更新していませんでした。簡単な HTML+CSS プロジェクトを終えたところです。数...

JavaScript のコールバック関数の理解と使用

目次概要コールバックまたは高階関数とは何ですか?コールバック関数はどのように機能しますか?コールバッ...

Nginx サーバーで URL リンクを設定する方法

LNMPのようなアーキテクチャを持つウェブサイトは、一般的にPHPフレームワークに基づいて開発されて...

CSS フレックスレイアウトのリストの最後の行を左揃えにする N 通りの方法 (要約)

張新旭氏の記事を引用して皆さんにシェアしたいと思います。 変更を加えたい場合は、対応する画像によって...

Linux での Docker のインストールと展開の例

以下の記事を読んだ後、プロジェクトをサーバーにデプロイできます。Tomcat、JDK、MySQL な...

CSS変数がJSインタラクティブコンポーネント開発にもたらす改善と変更のサンプルコードの詳細な説明

1. CSS変数がもたらす質的変化CSS 変数によってもたらされる改善は、CSS コードの節約や C...

MySQL InnoDBエンジンのインデックスとストレージ構造の詳細な説明

序文Oracle や SQL Server などのデータベースには、ストレージ エンジンが 1 つだ...