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 環境をインストールする (推奨)

推薦する

携帯電話番号の歩数記録を取得するWeChatアプレット

序文最近、小さなプログラムを開発しているときに、このような問題に遭遇しました。ユーザーが認証をクリッ...

MySQL テーブルスペースとは何ですか?

今日皆さんにお伝えしたいトピックは、「皆さんがよく話題にするテーブル スペースとは一体何でしょうか。...

Nginx レベルで基本的なユーザー認証を構成する手順を完了します。

序文アプリケーション シナリオ: おそらく、内部 Web サイトは外部ユーザーにアクセス可能である必...

Linux での Firewalld の高度な設定の使用に関する詳細な説明

IPマスカレードとポート転送Firewalldは2種類のネットワークアドレス変換をサポートしています...

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

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

MySQL でローカル ユーザーを作成し、データベース権限を付与する方法の例

序文MySQL をインストールすると、通常はスーパーユーザー root を作成します。多くの人がこの...

mysql 8.0.18.zip のインストールと構成方法のグラフィック チュートリアル (Windows 64 ビット)

以前にインストールされたバージョンのデータベースをアンインストールする方法については、この記事を参照...

JavaScript で長い画像のスクロール効果を実装する

この記事では、JavaScriptの長い画像スクロールの具体的なコードを参考までに共有します。具体的...

MySQL の暗号化と復号化の例

MySQL の暗号化と復号化の例データの暗号化と復号化はセキュリティ分野で非常に重要です。プログラマ...

Vue+Router+Element でシンプルなナビゲーションバーを実装する

このプロジェクトでは、Vue+Router+Element の具体的なコードを共有して、シンプルなナ...

MySQL関連のツールをいくつかお勧めします

序文:インターネット技術の継続的な発展に伴い、MySQL 関連のエコシステムはますます充実し、ますま...

Nginx の起動に失敗した場合のいくつかのエラー処理の詳細な説明

Nginx を Web サーバーとして使用する際に、次の問題が発生しました。 1. nginxの起動...

実用的なウェブオンラインツール12選

1.ファビコン.cc ico アイコンの Web サイトをオンラインで作成するには、画像をアップロー...

vue-tableは追加と削除を実装します

この記事では、vue-table の追加と削除の具体的なコードを参考までに紹介します。具体的な内容は...

Vueプロジェクトでコンポーネントをカプセル化する簡単な手順

目次序文Toastコンポーネントをカプセル化する方法ユースケース具体的な実装要約する序文ビジネスが発...