親コンポーネントは子コンポーネントと通信します
親グループ内のref参照を定義する 'react' から React,{Component,createRef} をインポートします。 './Child1' から Child1 をインポートします デフォルトクラスAppをエクスポートし、Componentを拡張します。 コンストラクタ(props){ スーパー(小道具) this.child = createRef() } 与える(){ 戻る( <div> <Child1 ref={this.child}/> <ボタンのonClick={this.fn.bind(this)}></ボタン> </div> ) } 関数(){ const 子 = this.child.current 子.setTitle() } } サブコンポーネントはデータソースとデータソースの変更方法を定義します React をインポートします。{Component} を 'react' からインポートします。 エクスポートデフォルトクラスChild1はComponentを拡張します{ 状態={ title:'タイトル' } 与える(){ 戻る ( <div> {この州のタイトル} </div> ) } タイトルを設定する(){ this.setstate({title:'hh'}) } } 子コンポーネントは親コンポーネントと通信します親コンポーネントは、独自のメソッドの 1 つを子コンポーネントに渡します。メソッドでは、状態の変更など、何でも実行できます。子コンポーネントは、 コンポーネント間の通信React には、この問題を解決するための Vue のようなイベント バスがありません。 1 つの方法は、共通の親コンポーネントを使用してプロキシ経由で実装することですが、プロセスは非常に面倒になります。 React は、コンポーネント ツリーの各レイヤーにプロパティを明示的に渡すことなく、コンポーネント間の通信を実現するための Context を提供します。
先祖と子孫
React をインポートし、 'react' から {createContext} を作成します。 {プロバイダー、コンシューマー} = createContext() を作成します。 輸出 { プロバイダー、//パブリッシュ コンシューマー //サブスクライブ} 2. 祖先ノード 'react' から React 、{Component} をインポートします。 './store' から {Provider,Consumer} をインポートします。 './Son' から Son をインポートします デフォルトクラスAppをエクスポートし、Componentを拡張します。 コンストラクタ(props){ スーパー(小道具) this.state={ 名前:'mingcen' } } 与える(){ 戻る ( <div> <プロバイダー値={this.state.name}> <息子/> </プロバイダー> </div> ) } } 3. 子孫ノード React をインポートします。{Component} から 'react' './store' から {Consumer} をインポートします。 エクスポートデフォルトクラスSon1はComponentを拡張します{ コンストラクタ(props){ スーパー(小道具) this.state={ 名前:'ううう' } } 与える(){ 戻る( <div> <消費者> { 値=>{ <div>{値.名前}</div> } } </消費者> </div> ) } } ブラザーノード通信
祖先 状態={ カウント:1, setCount:()=>{ this.setState(state=>{ 戻る { カウント:++状態.カウント } }) } } 与える(){ {count,setCount} = this.state とします。 戻る( <div> <プロバイダー値={{count,setCount}}> <Cmp1></Cmp1> <Cmp2></Cmp2> </プロバイダー> </div> ) } ブラザーCmp2 React をインポートし、{ Component 、 createContext } を 'react' から取得します。 エクスポートデフォルトクラスCmp2はComponentを拡張します{ // デフォルトデータのみ取得 --> プロバイダーコンポーネントにラップされていません static contextType = createContext 与える() { 戻る ( <div> <button onClick={this.setCount.bind(this)}>データの自動増加</button> </div> ) } setCount() { this.context.setCount() } } ブラザーCmp1 <消費者> { 値 => <h3>{value.count}</h3> } </消費者> 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: マークアップ言語 - テキストの CSS スタイルを指定する
>>: Xmeter APIインターフェーステストツールの使用状況の分析
1. 遅いクエリログ1.1 MySQL ログの種類ログは、データベースの操作や、ユーザーがデータベー...
この記事では、例を使用して、MySQL クエリ ステートメントの簡単な操作を説明します。ご参考までに...
最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue...
最近、Apple の記者会見を見てとても興奮したので、Mac システムを体験して Apple の素晴...
目次1. isPrototypeOf()例 1、オブジェクト クラス インスタンス:例 2: Hum...
目次1. 概要1.1 プロトタイプとは何ですか? 1.2 プロトタイプを入手する2. プロトタイプの...
背景社内に新しいサーバーが追加され、2Tのハードディスクがマウントされました。sshでログイン後、マ...
場合によっては、特定の条件に基づいて Web ページ内の HTML 要素を表示するか非表示にするかを...
Sttty は、Linux で端末設定を変更および印刷するための一般的なコマンドです。 1. パラ...
ナレッジポイントをプレビューします。アニメーションフレーム背景グラデーションvar() と calc...
目次1. メール2. 携帯電話番号3. 電話番号4. URLアドレスですか? 5. 文字列ですか? ...
Web プロジェクトがどんどん大きくなると、CSS は天文学的な大きさと複雑さを増します。この問題を...
<br /> 英語原文: http://desktoppub.about.com/od/...
なぜなら、SQL Server 2005 に基づくデータベース チュートリアルがあり、そこで使用され...
共同インデックスこの記事におけるジョイントインデックスの定義は次のとおりです (MySQL): AL...