説明するこの記事では、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 の導入とインストールのチュートリアル
解決策はただ一つ、ソースを変更することです。 github からのソースは基本的にタイムアウトするの...
1. 複製原理マスター サーバーはバイナリ ログ ファイルに更新を書き込み、ログのローテーションを追...
序文「画像処理というと、PhotoShop などの画像処理ツールを思い浮かべることが多いです。フロン...
1. ゴミかクラシックか? Web テクノロジーは急速に更新されており、Web サイトのインターフェ...
チームは新しいフレームを交換しました。すべての新しいビジネスでは、新しいフレームワークと新しいデータ...
1. getBoundingClientRect() 分析getBoundingClientRect...
span タグのスタイルに width 属性を直接設定すると、効果がないことがわかります。 disp...
1. Nginxの簡単な紹介Nginx は、無料のオープンソースの高性能 HTTP サーバーおよびリ...
フロントエンド開発者が習得する必要のあるスキル。これらのスキルにより、フロントエンド開発者の価値は数...
目次1. 連結() 2. 結合() 3. プッシュ() 5. シフト() 6. シフト解除() 7....
Linux システム、特にサーバー システムでは、デバイスのハードウェア情報を表示する必要がよくあり...
MySQL の導入現在、会社ではプラットフォーム運用を通じてMySQLを導入しています。金曜日、プラ...
より良いスクロールの原則親コンテナーであるため、ラッパーの高さはコンテンツのサイズに応じて増加します...
Linux で FTP サーバーを設定するためのチュートリアルを参照してください https://w...
環境の準備1. 環境構築React Native 中国語ウェブサイト2. 開発ツール フロントエンド...