実装のアイデア: 親コンポーネントから子コンポーネントに値を渡すには、 1. 親コンポーネントと子コンポーネント間の一方向の値転送1. 親から子への値の受け渡し親は子コンポーネントに値を渡し、子コンポーネントはデータを受け取った後、それを独自の変数に保存します。 //親コンポーネントの書き込み方法 <cld :numP="num" ></cld> //サブコンポーネントの定義とデータコンポーネント:{ 終了:{ テンプレート:'#child', 小道具:{ numP:数値 }, } } //サブコンポーネントコンテンツ <template id="child"> <div> {{ numP }} </div> </テンプレート> Props は、親コンポーネントから渡された値を受け取るために使用されます。props の記述方法は、次のように多数あります。 //方法 1: データを直接受信する props: ['numP'] //方法2: 型制限プロパティを追加する: [ numP: 数値 ] //方法3: デフォルト値のプロパティを追加する: [ 数値P: { タイプ:数値、 デフォルト:0 } ] //方法4: propsの値を制限する必要があるか: [ 数値P: { タイプ:数値、 デフォルト:0、 require:true // 必要な値を追加します。追加しない場合はエラーが報告されます} ] //方法5: オブジェクトフォームプロパティの使用: { 数値P: { タイプ:数値、 デフォルト:0、 } } 2. 子から父への価値の継承子は主にカスタムイベントを通じて親コンポーネントに値を渡します。具体的な例は以下のとおりです。 // 親コンポーネントのコンテンツ <div> 子コンポーネントによって取得されるデータは {{getNum}} です <cld :numb="num" @accept="getNumC"></cld> </div> //親コンポーネントメソッド メソッド:{ getNumC(データ){ this.getNum = data //子コンポーネントからデータを受け取る} }, //サブコンポーネント定義コンポーネント:{ 終了:{ テンプレート:'#child', データ(){ 戻る { numC:1314 //サブコンポーネントデータ定義} }, マウントされた(){ this.$emit('accept', this.numC) // カスタムイベントをトリガーする} } }, 2. 親子コンポーネントデータの双方向バインディング
方法 1: <div id="アプリ"> データ<br>{{num}} <input type="text" v-model="num"><br> <cld :numb="num" @accept="getNumC"></cld> </div> //サブコンポーネントコンテンツ <template id="child"> <div> データ<br>{{childNum}} <input type="text" v-model="childNum" /> </div> </テンプレート> <!-- 親子コンポーネントの通信 --> constアプリ = 新しいVue({ el:'#app', データ:{ 番号:'520', }, 方法:{ getNumC(データ){ this.num = データ } }, コンポーネント:{ 終了:{ テンプレート:'#child', 小道具:{ 数値:文字列 }, データ(){ 戻る { 子番号:0, } }, 時計:{ 数値:関数(){ this.childNum = this.numb }, 子番号:関数(){ this.$emit('accept',this.childNum) } }, マウントされた(){ this.childNum = this.numb } } } }) 方法2:双方向バインディングを実現するための vue 1.x の .sync 修飾子によって提供される機能。子コンポーネントが .sync を使用してプロパティの値を変更すると、その変更は親コンポーネントにバインドされた値にも同期されます。これは便利ですが、一方向のデータフローが中断されるため、問題が発生する可能性もあります。 (データは上から下へ流れ、イベントは下から上へ流れます) <cld :numb.sync="num" ></cld> // は次のように展開されます: <cld :numb="bar" @update:numb="val => bar = val"/> コンポーネントが numb の値を更新する必要がある場合は、更新イベントをトリガーする必要があります。 this.$emit("update:numb", newValue ); 具体的な使用例は以下の通りです。 // 親コンポーネント <Father :foo.sync="foo"></Father> //子コンポーネントのプロパティ: ['foo'], データ() { 戻る { 新しいFoo: this.foo; } }, 方法:{ 追加:関数(){ this.newMsg=10; this.$emit('update:foo',this.newFoo); } } フロントエンドフレームワーク Vue における親子コンポーネントデータの双方向バインディングに関するこの記事はこれで終わりです。Vue における親子コンポーネントデータの双方向バインディングに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL の詳細な単一テーブルの追加、削除、変更、クエリの CRUD ステートメント
>>: Docker が elasticsearch を起動するときのメモリ不足の問題と解決策
目次序文1. 基本データ2. 継承駆動設計3. 左右の値のエンコーディングに基づく設計4. ツリー構...
今日は、複数ページのスクロール切り替え効果を備えた Web サイトを簡単かつ効率的に開発できる、小さ...
Vue+jsはビデオのフェードインとフェードアウトを実現します。参考までに、具体的な内容は次のとおり...
Web ページのスタイル設定に関しては、プロジェクトで純粋な CSS または SCSS (および他...
react-routerでは、コンポーネント内のジャンプは<Link>で使用できます。し...
この記事の例では、ドラッグアンドドロップを使用して構造ツリーを作成するVueの具体的なコードを共有し...
この記事では、jsを使用してクールな花火効果を実現するための具体的なコードを参考までに共有します。具...
ほとんどのアプリケーション シナリオでは、緊急時に備えて重要なデータをバックアップし、安全な場所に保...
Q: xml と html の違いがわかりません。違いは何ですか? A: XMLと HTML の違い...
2020 年 4 月 23 日、本日、Windows 上の Ubuntu 20.04 では、Ubun...
SQL の基礎知識がある友人は、「クロステーブル クエリ」について聞いたことがあるはずですが、クロス...
目次1. 問題の背景: 2. 問題の原因: 3. 問題解決:要約: 1. 問題の背景: window...
序文この記事はかなり詳細で、少し面倒です。他のチュートリアル ドキュメントでは多くの手順が省略されて...
現在、2016サーバーは、win2008や2012よりも優れたマルチサイトhttpsサービスをサポー...
MySQL が挿入などの操作を実行するときにコミットする必要があるかどうかは、ストレージ エンジン...