説明するこの記事では、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 の導入とインストールのチュートリアル
CSS スタイルを使用して表内のフォントを垂直方向に中央揃えする方法は次のとおりです。下図のようなカ...
1. 正規表現マッチング大文字と小文字を区別するマッチングの場合 ~ ~*は大文字と小文字を区別しな...
この記事では、Docker を使用して Centos6 に Redis マスター/スレーブ データベ...
世界で最も有名なウェブサイトのロゴデザインにはどんなフォントが使われているかご存知ですか?これらのフ...
GROUP BY 句と HAVING 句を紹介する前に、まず SQL 言語の特殊な関数である集計関数...
この記事では、MySQL のスケジュールされたデータベース バックアップ操作の例について説明します。...
コードをコピーコードは次のとおりです。 <!DOCTYPE HTML PUBLIC "...
mapGettersヘルパー関数mapGettersヘルパー関数は、ストア内のゲッターをローカルの計...
この記事では、JavaScriptで動的なデジタル時計を実装するための具体的なコードを参考までに紹介...
分割線はウェブページでよく使われるデザインです。例えば、Zhihuのその他の回答をご覧ください。 こ...
1. まずSELECT文を実行して、すべての切り捨て文を生成します。ステートメント形式: selec...
注: Web 開発では、フォームに autocomplete="off" を追加...
目次1. axioの基本的な使い方2. クロスドメインの問題を解決するには? 3. パッケージ4. ...
animation-name アニメーション名。複数のアニメーションがバインドされていることを示す...
MySQLのインストール(4、5、6は省略可能)ステートメント: CentOS のバージョンは 7....