説明するこの記事では、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 の導入とインストールのチュートリアル
inode番号でファイルを削除するまずls -iを使用して、削除するファイルのinode番号を見つけ...
目次序文実装のアイデア実装手順1. Nginxをコンパイルする2. 設定ファイルは以下のとおりです要...
目次道具:ログインシナリオ:練習する:シナリオ1: 思考と実践シナリオ2: 思考と実践要約する道具:...
<br />はじめに:このアイデアは、数日前に上級ウェブデザインの次の記事を考えていると...
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
1. 使用シナリオこのような要件があるため、システムが開発されました。ユーザーがデスクトップを離れ...
目次1. データベース内の MySQL ステータスを確認します。 2. 設定ファイルを変更します。 ...
Windows コマンドテルネット形式: telnet IP ポート場合: テルネット 191.1....
目次1. 背景知識1. ARM64レジスタの紹介2. STP命令の詳しい説明(ARMV8マニュアル)...
ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウィンドウ」(ビューポート) に配置し...
<br />私が住んでいる地域では、コミュニティに出入りする車両を管理するために、コミュ...
高性能で軽量なウェブサービスソフトウェアであるNginxについて高い安定性 システムリソースの消費量...
MySQL 8.0 サービスを開始できません最近、 cmdで MySQL サービスを起動するときに遭...
この記事では、ランダムロールコーラーを実装するためのJavaScriptの具体的なコードを参考までに...
目次1. コンポーネント切り替え方式方法1: v-ifとv-elseを使用する方法 2: 組み込みコ...