序文Vue の親子コンポーネントの中心的な概念は一方向のデータフローの問題であり、プロパティは一方向に渡されることがわかっています。では、単方向データフロー問題とは一体何でしょうか? この記事では、この知識ポイントに関する研究ノートをまとめています。 1. 親コンポーネントが子コンポーネントに値を渡す<div id="アプリ"> <ブログ項目:title="タイトル"></ブログ項目> </div> // サブコンポーネントを定義する Vue.component("blog-item", { プロパティ: ['タイトル'], データ() { 戻る { } }, テンプレート: "<p>{{title}}</p>" }) // 親コンポーネントを定義する new Vue({ el: "#app", データ() { 戻る { タイトル: "メッセージ", } }, }) 親コンポーネントは、:title = "title" を通じて子コンポーネントに値を渡します。子コンポーネントは、props を通じて親コンポーネントの値を受け取り、補間式を通じてページにレンダリングします。 2. サブコンポーネントのプロパティの型制約の問題一般的な型制約は次のとおりです。 小道具: { タイトル: 文字列、 いいね: 数、 isPublished: ブール値、 コメントID: 配列、 著者: オブジェクト、 コールバック: 関数、 contactsPromise: Promise // または他のコンストラクタ } 上記の一般的な型に加えて、Vue は子コンポーネントのプロパティの型をカスタマイズするためのコンストラクターとカスタム関数も提供します。 (1)コンストラクタカスタム型//両方のコンポーネントに共通のカスタム関数 function Person (firstName, lastName) { this.firstName = ファーストネーム this.lastName = 姓 } //Vue.component('blog-post', { を使用します 小道具: { 著者: 人物 } //親コンポーネントで使用 var obj = new Person("1","2") <ブログ投稿:author='obj'></ブログ投稿> 上記のコードでは、まずオブジェクトの作成に使用できるパブリック カスタム コンストラクターを定義します。インスタンス オブジェクトには、firstName と lastName という 2 つのプロパティがあります。親コンポーネントでは、コンストラクターを呼び出して obj インスタンスを作成し、それを子コンポーネントに渡します。子コンポーネントは、オブジェクトを受け取るためのコンストラクター型のプロパティを定義します。 (2)カスタム関数とカスタム型// カスタム関数 Vue.component('blog-post', { 小道具: { propsA: String, //文字列型である必要があります propsB: [String, Number], //複数のオプション型 propsC: {type: Number, default: 100}, //型を定義し、デフォルト値を設定します //カスタム検証関数 propsD: { バリデータ: 関数 (値) { // この値は、次の文字列のいずれかと一致する必要があります。 return ['success', 'warning', 'danger'].indexOf(value) !== -1 } } } Vue は、子コンポーネントが受け取るパラメータの型を定義するための非常に柔軟な方法を提供します。上記のコードでは、カスタム検証関数を使用して、親コンポーネントの値の型を制限しています。 3. 一方向データフロー問題一方向のデータフローは、Vue の親子コンポーネントの中心的な概念であり、プロパティは一方向にバインドされます。親コンポーネントのプロパティ値が変更されると、対応する変更のために子コンポーネントに渡され、一方向の下向きバインディングが形成されます。親コンポーネントのプロパティ変更は下流の子コンポーネントに流れますが、逆に、子コンポーネントが誤って親コンポーネントのデータを変更して他の子コンポーネントの状態に影響を与えることを防ぐために、Vue では下から上へのデータフローは許可されないと規定されています。 親コンポーネントのプロパティが変更されると、子コンポーネントに渡されますが、子コンポーネントのプロパティの変更は親コンポーネントには影響しません。この場合、props は少し役に立たないと感じるかもしれません。コンポーネントを初期化するときにのみ使用でき、子コンポーネントでは操作できません。そのため、使用する場合は、props を操作するために、(1) ローカル変数を定義して props で初期化し、このローカル変数を操作するという 2 つの方法がよくあります。 (2)計算プロパティを定義し、propsを処理してそれを返します。 <div id="アプリ"> <ブログ項目:title="title1"></ブログ項目> <ブログ項目:title="title2"></ブログ項目> <ブログ項目:title="title3"></ブログ項目> <時間> <button @click='toclick'>クリックしてください</button> </div> // サブコンポーネントを定義する Vue.component("blog-item", { プロパティ: ['タイトル'], データ() { 戻る { } }, テンプレート: "<p>{{title}}</p>" }) // 親コンポーネント new Vue({ el: "#app", データ() { 戻る { タイトル1: "111", タイトル2: "222", タイトル3: "333" } }, メソッド: { クリック() { this.title3 = "000" } } }) <div id="アプリ"> <ブログ項目:title="タイトル"></ブログ項目> </div> // サブコンポーネントを定義する Vue.component("blog-item", { プロパティ: ['タイトル'], 計算: { 計算されたタイトル() { 「computedTitle」+ this.title を返します。 } }, データ() { 戻る { サブタイトル: "サブタイトル" + this.title } }, テンプレート: "<p>{{title}}==={{subTitle}}==={{computedTitle}}</p>" }) // 親コンポーネント new Vue({ el: "#app", データ() { 戻る { タイトル: "111", } }, }) 要約するVue の親コンポーネントと子コンポーネント間の値の転送と一方向データフローの問題に関するこの記事はこれで終わりです。Vue の親コンポーネントと子コンポーネント間の値の転送と一方向データフローに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: CentOS7でMySQL 5.7をアンインストールする方法
序文仮想通貨の狂気的な投機により、マイニングウイルスは犯罪者が最も頻繁に使用する攻撃方法の 1 つに...
nginxのインストール仮想マシンがインターネットにアクセスできることを確認します。 1. ルートユ...
この記事では、ネイティブ JS で実装された共有サイドバーを紹介します。効果は次のとおりです。 以下...
目次解決策1解決策2テーブルを作成するときに、興味深い問題に遭遇しました。「指定されたキーが長すぎま...
CentOS6 インストール ディスク (任意のバージョン) を準備するか、別の pnux インスト...
dl:定義一覧定義リストdt:定義タイトルタイトルを定義するdd:定義説明定義の説明dt は情報のタ...
完全なコードは次のとおりです。 HTMLコード:コードをコピーコードは次のとおりです。 <!-...
目次1. サーバー2. クライアント3. テストサービス1. サーバー1. YUMソースを使用してN...
docker リモート API を学習した学生であれば、ポート 2375 についてよくご存知だと思い...
開発環境ウィンドウ開発ツール Visual Studio Codeノードのインストールとnpm Wi...
ウェブページでEnterキーを押すと、フォームは自動的に送信され、他のページに移動します。クエリフォ...
目次概要1. 依存性注入2. Angularの依存性注入フレームワーク概要依存性注入: デザインパタ...
この記事では、MySQL 5.7 zipアーカイブ版のインストールチュートリアルを参考までに紹介しま...
序文運用・保守を行う人がスキルを持っていなければ、サーバーを操作するのに恥ずかしさを感じてしまうと言...
最近、あるプロジェクトを手伝ったのですが、MySQL マシンがしばらくすると自動的に停止し続けました...