説明するこの記事では、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 の導入とインストールのチュートリアル
プロジェクトをプロジェクトサイトのテスト環境にデプロイするJDK1.8トムキャット8.5 Maven...
最適化のアイデア最適化には主に 2 つの方向があります。再レンダリングの回数を減らします。 Reac...
1. ツール今必要なツールは2つあります: MySQLサーバー (mysql-5.7.18)、MyS...
目次ベース戻り値の型文字列とブール値数値とbigintシンボル未定義関数物体他のよくある質問参照エラ...
概要async/await と Promise の基本的な違いは、await fn() は現在の関数...
ファイル操作に関連するシステムコール作成するint creat(const char *ファイル名,...
目次プロジェクトの作成プロジェクト構造メイン.jsアプリ.vue:設定コンポジションAPI参照反応的...
目次1. ノードをインストールする2. Commander.jsをインストールする3. JavaSc...
序文コードを実行してエラーが発生すると、エラーが出力されます。エラーにはスタック情報が含まれており、...
世界最高のビジュアル デザイン スキルを持っていたとしても、訪問者がページ間やアイテム間を快適に移...
目次問題の概要問題の再現問題の拡大結論は問題の概要今日、仕事中に、DBA が突然、SQL に暗黙的な...
Linuxで環境変数を削除するには?unsetコマンドを使用してすぐに削除します1. Linuxクラ...
k3dとは何ですか? k3d は、Docker で K3s クラスターを実行するための小さなプログ...
実際のプロジェクト開発プロセスでは、ページがサーバーにアップロードされます。サーバーへの負荷を軽減し...
今日、プログラムが間違った時刻を挿入し、フィールドがデフォルト値 CURRENT_TIMESTAMP...