vuejs で再帰ツリー メニュー コンポーネントを実装する方法 (詳細なチュートリアル)
この記事では主に vuejs での再帰ツリー メニュー コンポーネントの実装を紹介し、参考として提供します。
前書き
少し前に、再帰コンポーネントが最も使用されるバックエンド管理システムを構築するために vue を使用しました。 また、公式ドキュメントに不慣れなため、多くの落とし穴を踏んでしまいました。今日はみんなと共有します。
再帰コンポーネント
コンポーネントは、name オプションがある場合にのみ、テンプレート内でそれ自体を再帰的に呼び出すことができます。 公式Webサイトのこの文は、キー定義コンポーネントにはname属性が必要であるというものです。
シミュレーションデータの形式は次のとおりです:
[ { "id": "1", "menuName": "基础管理", "menuCode": "10", "children": [ { "menuName": "用户管理", "menuCode": "11" }, { "menuName": "角色管理", "menuCode": "12", "children": [ { "menuName": "管理员", "menuCode": "121" }, { "menuName": "CEO", "menuCode": "122" }, { "menuName": "CFO", "menuCode": "123" }, { "menuName": "COO", "menuCode": "124" }, { "menuName": "普通人", "menuCode": "124" } ] }, { "menuName": "权限管理", "menuCode": "13" } ] }, { "id": "2", "menuName": "商品管理", "menuCode": "" }, { "id": "3", "menuName": "订单管理", "menuCode": "30", "children": [ { "menuName": "订单列表", "menuCode": "31" }, { "menuName": "退货列表", "menuCode": "32", "children": [] } ] }, { "id": "4", "menuName": "商家管理", "menuCode": "", "children": [] } ]
html 私たちのアイデアは、ulにliを設定し、無制限のulはliを設定し、タイトルをp要素で囲むことです。
<template> <li> <span @click="toggle"> <!-- toggle:点击关闭展开 --> <i v-if="isFolder" class="icon" :class="[open ? 'folder-open' : 'folder']" @cilck="toggle"></i> <!-- <i v-if="isFolder" class="icon " :class="[open ? 'folder-open' : 'folder']"></i> --> <i v-if="!isFolder" class="icon folder-text"></i> {{model.menuName}} </span> <ul v-show="open" v-if="isFolder"> <treeMenu v-for="item in model.children" :model="item"></treeMenu> </ul> </li> </template>
公式ドキュメントに記載されている再帰コンポーネントは、 name 属性の使用
注意すべき点はい、親コンポーネントから渡されたデータは最初にディープコピーする必要があります
ディープコピー:データにpropsを割り当て、値、JSONを割り当てながらディープコピーを作成しますdata 内の .parse(JSON.stringify(この値で大丈夫です)) で、データ値は勝手に名前が付けられます
export default { name: 'treeMenu', //props: ['model'], //这样和下面效果一样 props: { model: { type: Object }, }, components: {}, }
vueの考え方に従い、Domツリーを操作せずに、2つの変数を定義します。 1 つはサブメニューの表示と非表示を切り替えるため (open)、もう 1 つはサブメニューを保存してアイコンを変更するため (isFolder) です。
data() { return { open: false, //一个显示隐藏子菜单(open) //isFolder: true //这个不要写死,运用计算属性计算看存不存在 } },
vue 計算プロパティを使用して、isFolder の値を動的に変更し、アイコンを変更し、子の有無と子の長さを決定します
computed: { isFolder() { //利用vue计算属性动态改变isFolder的值,修改图标,判断存在不子级和子级长度 // return this.model.children && this.model.children.length //和下面效果一样 let isFolder = false if (this.model.children && this.model.children.length) { isFolder = true; } else { isFolder = false; } return isFolder } },
非表示のイベントを表示します
methods: { toggle() { if (this.isFolder) { this.open = !this.open } } },
この時点で、ツリー メニューが完成しました
上記は私です。皆さんのためにまとめました。今後皆さんのお役に立てれば幸いです。
関連記事:
詳細な回答: vue の変更はコンポーネントにどのような影響を与えますか?
vueでvue-cliを使用してhelloWorldを構築する方法
以上がvuejs で再帰ツリー メニュー コンポーネントを実装する方法 (詳細なチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









VUE.JSは、中小規模のプロジェクトや迅速な反復に適していますが、Reactは大規模で複雑なアプリケーションに適しています。 1)Vue.jsは使いやすく、チームが不十分な状況やプロジェクトスケールが小さい状況に適しています。 2)Reactにはより豊富なエコシステムがあり、高性能で複雑な機能的ニーズを持つプロジェクトに適しています。

HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

vue.jsでJSファイルを参照するには3つの方法があります。タグ;; mounted()ライフサイクルフックを使用した動的インポート。 Vuex State Management Libraryを介してインポートします。

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

VUEマルチページ開発は、VUE.JSフレームワークを使用してアプリケーションを構築する方法です。アプリケーションは別々のページに分割されます。コードメンテナンス:アプリケーションを複数のページに分割すると、コードの管理とメンテナンスが容易になります。モジュール性:各ページは、簡単に再利用および交換するための別のモジュールとして使用できます。簡単なルーティング:ページ間のナビゲーションは、単純なルーティング構成を介して管理できます。 SEOの最適化:各ページには独自のURLがあり、SEOに役立ちます。

vue.jsには、前のページに戻る4つの方法があります。$ router.go(-1)$ router.back()outes&lt; router-link to =&quot;/&quot; Component Window.history.back()、およびメソッド選択はシーンに依存します。

Vue Devtoolsを使用してブラウザのコンソールでVueタブを表示することにより、Vueバージョンを照会できます。 NPMを使用して、「NPM List -G Vue」コマンドを実行します。 package.jsonファイルの「依存関係」オブジェクトでVueアイテムを見つけます。 Vue CLIプロジェクトの場合、「Vue -Version」コマンドを実行します。 &lt; script&gt;でバージョン情報を確認してくださいVueファイルを参照するHTMLファイルにタグを付けます。
