親コンポーネントは子コンポーネントと通信します
親グループ内の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インターフェーステストツールの使用状況の分析
目次MVCCとはMySQL ロックとトランザクション分離レベルMySQL 元に戻すログMVCCの実装...
crontab コマンドは、Unix および Linux で定期的な実行命令を設定するために使用され...
序文この記事は主にMySQLの主キー0と主キー自己排除制約の関係を紹介し、皆さんの参考と学習のために...
目次1. JavaScriptはページ内のすべてのHTML要素を変更できる1. IDでHTML要素を...
今日から、定期的にちょっとした豆知識を整理していきます。簡単なものもあるかもしれませんが、どれも役に...
1. CSSナビゲーションバー(1)ナビゲーションバーの機能ナビゲーション バーを使いこなすことは、...
Fabric プロジェクトのソースコードを読み直してみたところ、Docker の部分でよくわからな...
Nginx (エンジン x) は、軽量で高性能な HTTP およびリバース プロキシ サーバーであり...
テーブルを作成テーブルテーブル名を作成create table if not exists 表名 m...
目次1. はじめに2. データベースをバックアップする3. オリジナルのMysqlをアンインストール...
1 HTML入門1.1 初めてのコード体験、最初のウェブページの作成XML/HTML コードコンテン...
SELECT * FROM テーブル名制限m,n; SELECT * FROM テーブル LIMI...
Nestjs 例外フィルターといえば、非常に強力な .Net のグローバル フィルターについて触れな...
MySQL 8.0.12 のダウンロードとインストールのチュートリアルを録画し、全員と共有しました。...
更新: 最近、サーバーがマイニング ウイルスによってハッキングされたことが判明しました。これは、おそ...