この記事では主に、親子コンポーネントの通信、親子コンポーネントのeventBus通信、localStorageまたはsessionStorageの使用、Vuexの使用の4つの方法を紹介します。必要な友達は参考にしてください。 . 勉強して勉強してください。
はじめに
ご存知のとおり、vue は jquery と比較した場合の最大の違いの 1 つはコンポーネント間の通信です。この記事の焦点は、最初の 2 つである親子コンポーネント通信と EventBus 通信を整理することです。Vue ドキュメントの指示はまだ少し単純で、最初は理解できませんでした。
親子コンポーネントの通信
親子以外のコンポーネントのイベントバス通信
ローカルキャッシュを使用してコンポーネント通信を実装
Vuex通信
通信方法: 親子コンポーネントの通信
親コンポーネントは子コンポーネントにデータを渡します
親コンポーネントは合計4つのことを行う必要があります
1.import Son from './son.js '
子コンポーネントsonを導入しますimport son from './son.js'
引入子组件 son
2.在components : {"son"}
里注册所有子组件名称
3.在父组件的template应用子组件, <son></son>
4.如果需要传递数据给子组件,就在template模板里写 <son :num="number"></son>
// 1.引入子组件 import counter from './counter' import son from './son'
// 2.在ccmponents里注册子组件 components : { counter, son },
// 3.在template里使用子组件 <son></son>
// 4.如果需要传递数据,也是在templete里写 <counter :num="number"></counter>
子组件只需要做1件事
1.用props接受数据,就可以直接使用数据
2.子组件接受到的数据,不能去修改。如果你的确需要修改,可以用计算属性,或者把数据赋值给子组件data里的一个变量
// 1.用Props接受数据 props: [ 'num' ],
// 2.如果需要修改得到的数据,可以这样写 props: [ 'num' ], data () { return { number : this.num } },
子组件向父组件传递数据
父组件一共需要做2件事情
在template里定义事件
在methods里写函数,监听子组件的事件触发
// 1. 在templete里应用子组件时,定义事件changeNumber <counter :num="number" @changeNumber="changeNumber" > </counter>
// 2. 用changeNumber监听事件是否触发 methods: { changeNumber(e){ console.log('子组件emit了',e); this.number = e }, }
子组件一共需要1件事情
在数据变化后,用$emit触发即可
// 1. 子组件在数据变化后,用$emit触发即可,第二个参数可以传递参数 methods: { increment(){ this.number++ this.$emit('changeNumber', this.number) }, }
第二种通信方式: eventBus
eventBus这种通信方式,针对的是非父子组件之间的通信,它的原理还是通过事件的触发和监听。
但是因为是非父子组件的关系,他们需要有一个中间组件来连接。
我是使用的通过在根组件,也就是#app组件上定义了一个所有组件都可以访问到的组件,具体使用方式如下
使用eventBus传递数据,我们一共需要做3件事情
1.给app组件添加Bus属性 (这样所有组件都可以通过this.$root.Bus
访问到它,而且不需要引入任何文件)
2.在组件1里,this.$root.Bus.$emit
触发事件
3.在组件2里,this.$root.Bus.$on
监听事件
// 1.在main.js里给app组件,添加bus属性 import Vue from 'vue' new Vue({ el: '#app', components: { App }, template: '<App/>', data(){ return { Bus : new Vue() } } })
// 2.在组件1里,触发emit increment(){ this.number++ this.$root.Bus.$emit('eventName', this.number) },
// 3.在组件2里,监听事件,接受数据 mounted(){ this.$root.Bus.$on('eventName', value => { this.number = value console.log('busEvent'); }) },
第三种通信方式: 利用localStorage或者sessionStorage
这种通信比较简单,缺点是数据和状态比较混乱,不太容易维护。
通过window.localStorage.getItem(key)
获取数据
通过window.localStorage.setItem(key,value)
存储数据
注意:用JSON.parse() / JSON.stringify()
components: {"son"}
に登録します 3. 親のテンプレートにサブコンポーネントを適用しますコンポーネント、<son></son>
4. サブコンポーネントにデータを渡す必要がある場合は、<son :num="number"></son>
rrreeerrreeerrreeerrreee
rrreeerrreee
親コンポーネントは合計を行う必要がありますテンプレート内でイベントを定義しますサブコンポーネントのイベントトリガーをリッスンする関数をメソッドに記述しますrrreeerrreee
サブコンポーネントには合計 1 つのものが必要ですデータが変更されたら、次を使用するだけです$emit でトリガーしますrrreee
🎜🎜 2 番目の通信メソッド:eventBus🎜🎜🎜🎜eventBus は、非親コンポーネントと子コンポーネント間の通信を目的とした通信メソッドであり、その原理はやはりイベントのトリガーと監視です。 🎜🎜ただし、これらは親子コンポーネントではないため、それらを接続するための中間コンポーネントが必要です。 🎜🎜ルートコンポーネントである#appコンポーネントに、すべてのコンポーネントからアクセスできるコンポーネントを定義して使用しています🎜🎜具体的な使い方は以下の通りです🎜🎜eventBusを使ってデータを転送するには、合計3つを行う必要があります。物事🎜🎜 1 .アプリコンポーネントに Bus 属性を追加します (これにより、すべてのコンポーネントがthis.$root.Bus
を通じてアクセスできるようになり、ファイルを導入する必要がなくなります)🎜🎜 2.コンポーネント 1 では、 this.$root.Bus.$emit
がイベント 🎜🎜 3 をトリガーします。コンポーネント 2 では、this.$root.Bus.$on
がイベントをリッスンします。イベント 🎜rrreeerrreeerrreee🎜🎜🎜 3 番目のタイプの通信方法: localStorage または sessionStorage を使用する🎜🎜🎜🎜 この種の通信の欠点は、データとステータスがわかりにくく、維持するのが容易ではないことです。 🎜🎜 window.localStorage.getItem(key)
を通じてデータを取得します 🎜🎜 window.localStorage.setItem(key,value)
を通じてデータを保存します 🎜🎜🎜注: 🎜🎜データ形式の変換には JSON.parse() / JSON.stringify()
を使用します。 🎜🎜🎜🎜4番目のコミュニケーション方法: Vuexを使用する🎜🎜🎜🎜Vuexはより複雑なので、別の記事を書くことができます🎜🎜上記は、皆さんのためにまとめたものです。将来的に皆さんのお役に立てれば幸いです。 🎜🎜関連記事: 🎜🎜🎜 SpringMVC を使用して vue クロスドメインリクエストを解決する🎜🎜🎜🎜 webpack 4.0.0-beta.0 バージョンの新機能 (詳細なチュートリアル)🎜🎜🎜🎜 vue2 で値の転送と通信を実装する方法.0 コンポーネント 🎜🎜以上がVue コンポーネント通信 (詳細なチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
