1. 父から息子へ(1) 親コンポーネントの子コンポーネントタグにプロパティをバインドし、転送する変数をマウントします。 (2) 子コンポーネントで props を通じてデータを受け取ります。 props は配列またはオブジェクトです。受け取ったデータはそのまま使用できます。 props: ["プロパティ名"] props:{プロパティ名: データ型} //親コンポーネント <テンプレート> <div> <i>親コンポーネント</i> <!--ページの使用法--> <son :data='名前'></son> </div> </テンプレート> <スクリプト> import son from "./son.vue"; //親コンポーネントをインポート export default { components: { son }, //コンポーネントを登録します name: "親コンポーネント", データ() { 戻る { name: "Frazier", //親コンポーネントは変数を定義します}; }, }; </スクリプト> //サブコンポーネント <テンプレート> <div>{{データ}}</div> </テンプレート> <スクリプト> エクスポートデフォルト{ コンポーネント: { }, 名前: 'サブコンポーネント', プロパティ:["データ"], }; </スクリプト> 2. 息子から父へ(1)親コンポーネントの子コンポーネントタグのイベントをカスタマイズし、必要なメソッドを呼び出します。 //親コンポーネント <テンプレート> <div> <i>親コンポーネント</i> <!--ページの使用法--> <son @lcclick="lcclick"></son>//イベントをカスタマイズする</div> </テンプレート> <スクリプト> import son from "./son.vue"; //親コンポーネントをインポート export default { components: { son }, //コンポーネントを登録します name: "親コンポーネント", データ() { 戻る {}; }, メソッド: { lcclick(){ アラート('息子が父親に引き継がれる') } }, }; </スクリプト> //サブコンポーネント <テンプレート> <div> <button @click="lcalter">クリックしてください</button> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ コンポーネント: { }, 名前: 'サブコンポーネント', メソッド: { 呼び出し(){ this.$emit('lcclick')//emit を通じてイベントをトリガーします} }, }; </スクリプト> 3. ブラザーコンポーネント通信(バス) (1)srcに新しいBus.jsファイルを作成し、空のvueインスタンスをエクスポートします。 画像例: 4. ref/refs(親子コンポーネント通信) (1) refが通常のDOM要素で使用される場合、参照はDOM要素を指します。子コンポーネントで使用される場合、参照はコンポーネントインスタンスを指します。 //親コンポーネント <テンプレート> <div> <button @click="sayHello">こんにちはと言う</button> <child ref="childForRef"></child> </div> </テンプレート> <スクリプト> './child.vue' から子をインポートします。 エクスポートデフォルト{ コンポーネント: { 子 }, データ () { 戻る { 子参照: null、 } }, マウント() { this.childForRef = this.$refs.childForRef; コンソールにログ出力します。 }, メソッド: { こんにちは(){ this.childForRef.sayHello() } } } </スクリプト> //サブコンポーネント <テンプレート> <div>お子様向けコンテンツ</div> </テンプレート> <スクリプト> エクスポートデフォルト{ データ () { 戻る { 名前:「私は子供です」 } }, メソッド: { こんにちは(){ コンソールにログ出力します。 アラート('hello'); } } } </スクリプト> 5. Vuex通信コンポーネントは、非同期操作であるアクションにディスパッチします。アクションは、論理操作を通じて状態を変更するミューテーションにコミットし、それによってコンポーネントと同期してデータ ステータスを更新します。 //親コンポーネントテンプレート> <div id="アプリ"> <子供A/> <子供B/> </div> </テンプレート> <スクリプト> import ChildA from './ChildA' // コンポーネントAをインポート import ChildB from './ChildB' // コンポーネントBをインポート export default { components: {ChildA, ChildB} // コンポーネントを登録する} </スクリプト> //サブコンポーネントA <テンプレート> <div id="childA"> <h1>私はコンポーネント A です</h1> <button @click="transform">クリックするとコンポーネント B がデータを受信できるようになります</button> <p>B がクリックされたため、メッセージが変更されました: {{BMessage}}</p> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ データ() { 戻る { メッセージ: 「こんにちは、コンポーネント B、私はコンポーネント A です」 } }, 計算: { Bメッセージ() { // ストアから取得したコンポーネント B のデータをここに保存します。 return this.$store.state.BMsg } }, メソッド: { 変身() { //receiveAMsgをトリガーし、コンポーネントAのデータをストアに保存します。this.$store.commit('receiveAMsg', { AMsg: this.AMessage }) } } } </スクリプト> //サブコンポーネント B <テンプレート> <div id="childB"> <h1>私はコンポーネント B です</h1> <button @click="transform">クリックするとコンポーネント A がデータを受信できるようになります</button> <p>A をクリックすると、メッセージが変わります: {{AMessage}}</p> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ データ() { 戻る { Bメッセージ: 「こんにちは、コンポーネントA、私はコンポーネントBです」 } }, 計算: { メッセージ() { // ここでストアから取得したコンポーネント A のデータを保存します。 return this.$store.state.AMsg } }, メソッド: { 変身() { // 受信BMsgをトリガーし、コンポーネントBのデータをストアに保存します。this.$store.commit('receiveBMsg', { BMsg: this.BMessage }) } } } </スクリプト> //ヴュークス 'vue' から Vue をインポートします 'vuex' から Vuex をインポートします Vue.use(Vuex) 定数状態 = { AMsg: ''、 BMsg: '' } const 変異 = { 受信AMsg(状態、ペイロード) { // コンポーネントAのデータを状態に保存する 状態.AMsg = ペイロード.AMsg }, 受信BMsg(状態、ペイロード) { // コンポーネントBのデータを状態に保存する 状態.BMsg = ペイロード.BMsg } } デフォルトの新しいVuex.Storeをエクスポートします({ 州、 突然変異 }) 6. $親Parent を使用すると、親コンポーネント インスタンスを取得できます。その後、このインスタンスを介して親コンポーネントのプロパティとメソッドにアクセスできます。また、親コンポーネント インスタンスを取得できる兄弟親もあり、その後、このインスタンスを介して親コンポーネントのプロパティとメソッドにアクセスできます。また、親コンポーネント インスタンスを取得できる兄弟親もあり、その後、このインスタンスを介して親コンポーネントのプロパティとメソッドにアクセスできます。また、ルート コンポーネント インスタンスを取得できる兄弟ルートもあります。 // 親コンポーネントのデータを取得する this.$parent.foo // 親コンポーネントにデータを書き込む this.$parent.foo = 2 // 親コンポーネントの計算プロパティにアクセスします this.$parent.bar //親コンポーネントメソッド this.$parent.baz() を呼び出す // 子コンポーネントを親コンポーネントに渡す例では、this.$parent.getNum(100) を使用して値を親コンポーネントに渡すことができます。 7.セッションストレージ値の転送SessionStorage はブラウザのグローバル オブジェクトであり、ページが閉じられるとそこに保存されたデータはクリアされます。この機能を使用すると、すべてのページでデータのコピーを共有できます。 // データをセッションストレージに保存する sessionStorage.setItem('キー', '値'); // sessionStorage からデータを取得します。let data = sessionStorage.getItem('key'); // sessionStorage から保存されたデータを削除します sessionStorage.removeItem('key'); // sessionStorage から保存されたすべてのデータを削除します。sessionStorage.clear(); 注: ここに保管されるのはキーと値のペアであり、文字列型のみになります。オブジェクトを保管する場合は、let objStr = JSON.stringify(obj) を使用して文字列に変換してから保管する必要があります (let obj = JSON.parse(objStr) を使用してオブジェクトに解析する場合)。 //ローカルストレージ ストレージ.set(キー,値) ストレージ.get(キー、定義) //セッションストレージ storage.session.set(キー、値) storage.session.get(キー、値) 8. ルーティング値疑問符を使用して値を渡す { パス: '/b/:name', 名前: 'b', コンポーネント: () => import( '../views/B.vue') }, ページBでは、this.$route.params.nameを使用して、ルートによって渡された名前の値を取得できます。 親子コンポーネントを使用して値を渡す router-view自体もコンポーネントなので、親子コンポーネントを使用して値を渡し、対応する子ページにpropsを追加することもできます。タイプが更新されてもルートは更新されないため、子ページのマウントされたフックで最新のタイプ値を直接取得することはできませんが、watchが使用されます。 <ルータービュー:type="type"></ルータービュー> // サブページのプロパティ: ['type'] 時計: タイプ(){ // console.log("この方法では、常に最新のデータを取得できます: type=", this.type) }, }, 9. 祖先の孫 $attrs通常の状況では、中間遷移として父の props を使用する必要がありますが、この方法では、父コンポーネントに親コンポーネントの業務に関係のない属性が多くなり、結合度が高くなります。$attrs の助けを借りて、簡素化することができ、祖父母も孫も変更する必要がありません。 <テンプレート> <セクション> <parent name="grandParent" sex="男" age="88" hobby="code" @sayKnow="sayKnow"></parent> </セクション> </テンプレート> <スクリプト> './Parent' から Parent をインポートします エクスポートデフォルト{ 名前:「祖父母」 コンポーネント: 親 }, データ() { 戻る {} }, メソッド: { 知っていると言う(val){ コンソール.log(値) } }, マウント() { } } </スクリプト> 親コンポーネント <テンプレート> <セクション> <p>親コンポーネントは</p>を受け取ります。 <p>祖父の名前: {{name}}</p> <children v-bind="$attrs" v-on="$listeners"></children> </セクション> </テンプレート> <スクリプト> './Children' から Children をインポートします。 エクスポートデフォルト{ 名前:「親」、 コンポーネント: 子供たち }, // 親コンポーネントは名前を受け取るので、名前の値は子コンポーネントの props:['name'] には渡されません。 データ() { 戻る {} }, メソッド: {}, マウント() { } } </スクリプト> サブコンポーネント <テンプレート> <セクション> <p>サブコンポーネントを受信しました</p> <p>祖父の名前: {{name}}</p> <p>祖父の性別: {{sex}}</p> <p>祖父の年齢: {{age}}</p> <p>祖父の趣味: {{hobby}}</p> <button @click="sayKnow">わかっています</button> </セクション> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前:「子供」、 コンポーネント: {}, // 親コンポーネントは name 属性を受け取っているため、子コンポーネントには name は渡されません props:['sex','age','hobby','name'], データ() { 戻る {} }, メソッド: { 知っている(){ this.$emit('sayKnow','私は知っている') } }, マウント() { } } </スクリプト> 10. Sun Chuanzuは$listenersを使用する9番目と同じ 祖先コンポーネント <テンプレート> <div id="アプリ"> <children-one @eventOne="eventOne"></children-one> {{メッセージ}} </div> </テンプレート> <スクリプト> '../src/components/children.vue' から ChildrenOne をインポートします。 エクスポートデフォルト{ 名前: 'アプリ'、 コンポーネント: チルドレンワン、 }, データ() { 戻る { メッセージ: '' } }, メソッド: { イベントOne(値) { this.msg = 値 } } } </スクリプト> 親コンポーネント <テンプレート> <div> <children-two v-on="$listeners"></children-two> </div> </テンプレート> <スクリプト> './childrenTwo.vue' から ChildrenTwo をインポートします。 エクスポートデフォルト{ 名前: 'childrenOne', コンポーネント: 子供2人 } } </スクリプト> サブコンポーネント <テンプレート> <div> <button @click="setMsg">クリックして祖父に渡す</button> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前: 「子供」 メソッド: { setMsg() { this.$emit('eventOne', '123') } } } </スクリプト> 11. Promiseパラメータの受け渡しプロミス解決で複数のパラメータを渡す方法 //この使用法と似ていますが、実際には最後の2つのパラメータは取得できません。promise = new Promise((resolve,reject)=>{ a = 1とする b = 2とする c = 3とする 解決(a,b,c) }) promise.then((a,b,c)=>{ コンソールログ(a,b,c) }) resolve() は 1 つのパラメータのみを受け入れて処理することができ、余分なパラメータは無視されます。 プロミス = 新しいプロミス((解決、拒否)=>{ 解決([1,2,3]) }) promise.then((arr)=>{ コンソールログ(arr[0],arr[1],arr[2]) }) 物体 プロミス = 新しいプロミス((解決、拒否)=>{ 解決({a:1,b:2,c:3}) }) promise.then(obj=>{ コンソールログ(obj.a、obj.b、obj.c) }) 12. グローバル変数グローバル変数を定義し、値を持つコンポーネントに直接値を代入し、必要なコンポーネントで直接使用します。詳細については私のブログを参照してください。 これで、Vue 値転送の 12 の方法についての記事は終了です。Vue 値転送の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: RedHat 6.5/CentOS 6.5 に MySQL 5.7.20 をインストールするための詳細なチュートリアル
目次背景なぜエラー処理が必要なのでしょうか? async await より適切なエラー処理まとめ要約...
Shtml と asp は似ています。shtml という名前のファイルでは、asp の命令と同様に、...
本日ご紹介するのは、jQuery を使用してシンプルなカルーセルを実装する方法です。実装の原則は次の...
コードは次のようになります。 <!DOCTYPE html> <html> ...
MySQL 組み込みの日付関数 TIMESTAMPDIFF は、2 つの日付間の秒数、分数、時間数、...
目次$nextTick() $forceUpdate() $セット() .sync——2.3.0 以...
目次序文🍹準備🍲vue3 の使い方🍖 実装要約する序文最近、私の最初の公式 vue3 + ts プロ...
実行中のコンテナIDを見つける ドッカーps上記のコンテナの物理的な場所を見つける /var/lib...
Web アプリケーションが 1 台のマシンでのみ実行される場合、パフォーマンスを向上させるのは非常に...
序文この記事では、DBA がいないチームが参考にできるように、MySQL の一般的な使用に関するヒン...
<br />最近、UCDChina は「インターフェース上のテキストに注意を払う」という...
以前、ブロガーは VMware 仮想マシンに Ubuntu システムをインストールしました。まだイン...
独自のWebプロジェクトをtomcatディレクトリの下のwebappsディレクトリに配置します。 R...
JDK とは何ですか?まあ、この質問がわからないのであれば、なぜこれをインストールするのか本当にわか...
(1)HTTPリクエストを減らす。 (リソース ファイルをマージし、イメージ スプライトを使用します...