説明するこの記事では、Vue テクノロジーに基づいて再帰コンポーネントを実装する方法を紹介します。 Vue を使用して第 1 レベルのリストと第 2 レベルのリストを表示するのは非常に簡単ですが、無限レベルを実現したい場合は、v-for を次々に適用するだけでは機能しません。このとき、再帰メソッドを使用する必要があります。いわゆる再帰は、自分自身を継続的に呼び出すことです。再帰コンポーネントは、無限リストの表示を実現するために、自分自身のコンポーネントを継続的に呼び出します。以下のように表示されます。 コードの実装1. ツリーコンポーネント ディレクトリに tree.vue コンポーネントを作成します。 <!-- ツリー ツリー コンポーネント --> <テンプレート> <div class="コンテナ"> <div v-for="treeData 内の項目" :key="項目"> <div class="row" @click="extend(item)"> <span ref="アイコン" クラス="アイコン-共通" :class="{ 'アイコンダウン': item.children, 'アイコンラジオ': !item.children, 'アイコン回転': item.isExtend }" </span> <span class="title">{{ item.title }}</span> </div> <div v-if="isExtend(item)" class="children"> <tree :tree-data="item.children" :is-extend-all="isExtendAll" /> </div> </div> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ 小道具: { // コンポーネントデータ treeData: { タイプ: 配列、 デフォルト: []、 }, // デフォルトですべて展開するかどうか isExtendAll: { タイプ: ブール値、 デフォルト: true、 } }, メソッド: { // リストを展開する extend(item) { if (item.children) { アイテムを拡張します。 } }, isExtend(アイテム) { const isExtend = !item.isExtend && true; this.isExtendAll を返します。isExtend: !isExtend; } } } </スクリプト> <スタイルスコープ> 。容器 { フォントサイズ: 14px; } 。行 { ディスプレイ: フレックス; アイテムの位置を中央揃えにします。 カーソル: ポインタ; 下マージン: 10px; } /* ----------- アイコンスタイル START ------------- */ .アイコン共通 { 表示: インラインブロック; 遷移: すべて .3; } .アイコンダウン{ 幅: 0; 高さ: 0; 境界線: 4px 透明実線; 上境界線: 6px 実線 #000; 下部境界線: なし; } .icon-radio { 幅: 6px; 高さ: 6px; 背景: #000; 境界線の半径: 50%; } .アイコン回転{ 変換: 回転(-90度); } /* ----------- アイコンスタイル END ------------- */ 。タイトル { 左マージン: 10px; } 。子供たち { 左パディング: 20px; } </スタイル> 2. 参考文献 必要な場所にツリー コンポーネントをインポートします。 <テンプレート> <tree :tree-data="ツリーデータ" /> </テンプレート> <スクリプト> './components/tree.vue' から Tree をインポートします。 エクスポートデフォルト{ コンポーネント: 木、 }, データ() { 戻る { ツリーデータ: [ { タイトル: 「レベル 1 リスト 1」、 子供たち: [ { タイトル: 「二次リスト 1」 子供たち: [ { タイトル: 「レベル 3 リスト 1」、 } ] }, { タイトル: 「二次リスト 2」 } ] }, { タイトル: 「レベル 1 リスト 2」 子供たち: [ { タイトル: 「二次リスト 1」 }, { タイトル: 「二次リスト 2」 } ] }, { タイトル: 「レベル 1 リスト 3」 子供たち: [ { タイトル: 「レベル 3 リスト 1」、 }, { タイトル: 「レベル 3 リスト 2」 }, { タイトル: 「レベル 3 リスト 3」、 } ] } ] } } } </スクリプト> レンダリング 要約する このコンポーネントは、データ表示といくつかの基本的な機能のみを実装しており、一部のプロジェクトの実際のニーズを満たしていないことは確かです。これを使用する場合は、これに基づいて拡張および改善する必要があります。 (たとえば、このコンポーネントを使用して左側のメニューを実装する場合、データを自分で構成し、コンポーネント テンプレートを少し変更してクリック ジャンプを実現できます)。 コンポーネント機能
以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux プロセス管理ツール スーパーバイザーのインストールと設定のチュートリアル
>>: Windows 7 での MySQL 8.0.18 の導入とインストールのチュートリアル
この記事では、Windows10でmysql8.0.17を置き換える具体的な手順を参考までに紹介しま...
1. スタートアップメニューでは、カーソルを最初の行に移動します - eを押します 2. UTF-8...
序文システムにファイル システムを作成し、それを永続的または非永続的にマウントする方法を学習します。...
目次1. ブリッジを設定し、検証のためにパケットをキャプチャする1. ブリッジデバイスとセッションを...
序文私はプログラマーとしてスタートした PHP プログラマーです。これまで、トレーニング コースで勉...
目次1. Promise とは何ですか? 2. なぜ Promise が存在するのでしょうか? 3つ...
目次序文環境の準備カテゴリコンポーネントアプリのコンポーネント1. デフォルトスロット2. 名前付き...
mysql の権限とインデックスmysql の最高権限ユーザーは root です。 CREATE U...
目次Linux netstat コマンド1. TCP接続ステータスの詳細な説明2. コマンド形式3....
この記事では、省と都市間の連携効果を実現するためのJavaScriptの具体的なコードを参考までに共...
序文CSS グリッドは通常、さまざまなフレームワークにバンドルされていますが、実際のビジネス ニーズ...
LinuxにRedisをインストールしたら、Javaを使って接続します。Javaコードは次のとおりで...
目次1. 2 つの setState を何回呼び出すのですか? 2. 2 つの setState の...
目次1. classList属性2. 実用化以前の JavaScript では、最初にクラス属性を取...
私が実現したい機能は、新しいウィンドウを開いて新しいページを表示することですが、パラメータを渡す必要...