1. 何ですかコンポーネント間の通信は、次の 2 つの単語に分けることができます。
Vueシリーズの記事を振り返ると、コンポーネントは 通信とは、特定の目的を達成するために、送信者が特定の媒体を介して特定の形式で受信者に情報を送信するプロセスを指します。広い意味では、あらゆる情報トラフィックは通信です。 コンポーネント間の通信とは、コンポーネントが特定の目的を達成するために何らかの方法で情報を送信することを意味します。 2. コミュニケーションの方法コンポーネントを転送する方法は多数あり、送信者と受信者に応じて次のように分けられます。
親コンポーネントから子コンポーネントへの受け渡し
親コンポーネントが子コンポーネントを呼び出すときは、子コンポーネントタグでパラメータを渡すだけでよく、子コンポーネントは 関数 EmailInput(props) { 戻る ( <ラベル> メールアドレス: <input value={props.email} /> </ラベル> ); } 定数要素 = <EmailInput email="[email protected]" />; 子コンポーネントが親コンポーネントに渡される 子コンポーネントと親コンポーネントの通信の基本的な考え方は、親コンポーネントが子コンポーネントに関数を渡し、この関数のコールバックを通じて子コンポーネントから渡された値を取得することです。 親コンポーネントの対応するコードは次のとおりです。 ParentsクラスはComponentを拡張します{ コンストラクタ() { 素晴らしい(); この状態 = { 価格: 0 }; } アイテム価格を取得する(e) { this.setState({ 価格: }); } 与える() { 戻る ( <div> <div>価格: {this.state.price}</div> {/* 子コンポーネントに関数を渡す*/ <子 getPrice={this.getItemPrice.bind(this)} /> </div> ); } } サブコンポーネントの対応するコードは次のとおりです。 クラスChildはComponentを拡張します{ クリックグッズ(e) { // この関数に値を渡します this.props.getPrice(e); } 与える() { 戻る ( <div> <button onClick={this.clickGoods.bind(this, 100)}>商品1</button> <button onClick={this.clickGoods.bind(this, 1000)}>商品2</button> </div> ); } } 兄弟コンポーネント間の通信 兄弟コンポーネント間でデータが転送される場合、親コンポーネントはデータの相互通信を実現するための中間層として機能します。 クラス Parent は React.Component を拡張します { コンストラクタ(props) { スーパー(小道具) this.state = {count: 0} } setCount = () => { this.setState({count: this.state.count + 1}) } 与える() { 戻る ( <div> <兄弟A カウント = {this.state.count} /> <兄弟B onClick={this.setCount} /> </div> ); } } 親コンポーネントから子孫コンポーネントへの受け渡し グローバル データと同様に、親コンポーネントが子孫コンポーネントにデータを渡すことはよくあります。 const PriceContext = React.createContext('price')
クラスMyClassはReact.Componentを拡張します{ 静的コンテキストタイプ = PriceContext; 与える() { 価格を this.context とします。 /* この値に基づいてレンダリングを実行します*/ } } 消費者コンポーネント: <価格コンテキスト.消費者> { /* これは関数です */ } { 価格 => <div>価格:{price}</div> } </PriceContext.Consumer> 非リレーショナルコンポーネント転送 コンポーネント間の関係が複雑な場合は、 結論
したがって、通信プロセス中に、データの保存場所は親の場所に保存されることがわかります。 React におけるコンポーネント間の通信方法についてはこれで終わりです。React コンポーネント間の通信の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL 8.0.17 インストール グラフィック チュートリアル
>>: Linux ファイル/ディレクトリの権限と所有権の管理
0. 環境この記事のオペレーティング システム: CentOS 7.2.1511 x86_64 My...
Linuxにフラッシュをインストールする方法1. Flashの公式サイトにアクセスし、ダウンロードを...
vue2 プロジェクト開発の経験があれば、$refs に精通しているでしょう。 vue3 の急激なア...
「読み取り専用」と「無効」はどちらも、ユーザーがフォーム フィールドの内容を変更できないようにします...
目次インストールの前提条件ステップ1: システムの残りを確認してクリアし、Dockerの依存関係をイ...
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
この記事では、トランザクション、インデックス、ロックなどの MySQL の知識ポイントの原理と使用法...
序文昨日、小さなプロジェクトを書いていたときに、txt ドキュメントのデータを mysql データベ...
今日、Nginxを使っていたら500エラーが発生しました。エラーコードを検索してみんなに共有しました...
序文デフォルトでは、MySQL はデータベース クエリ データをキャッシュするために大きなメモリ ブ...
目次プロセスコミュニケーションプロセス間の双方向通信問題要約するサードパーティのデータ サプライヤー...
この記事では、検証コードのランダム生成と検証を実現するためのJavaScriptの具体的なコードを参...
目次G2チャートについて使用テンプレートで使用される完全なコード (棒グラフ)世界地図を追加するG2...
序文モバイル端末に触れたばかりの友人の多くは、クリックジャンプルーティング、特にVueルーティングを...
前提条件: Dockerはすでにインストールされています1. 画像を見つける(方法は2つあります) ...