コンポーネント通信の概要コンテンツ
3つの方法
まとめコンポーネント内の状態はプライベートです。つまり、コンポーネントの状態はコンポーネント内でのみ使用でき、コンポーネントの外部で直接使用することはできません。 コンポーネントコミュニケーション - 父から息子へコンテンツ:
コアコード親コンポーネントはデータを提供し、それを子コンポーネントに渡します。 クラス Parent は React.Component を拡張します { 状態 = { lastName: '王' } 与える() { 戻る ( <div> 子コンポーネントにデータを渡します: <Child name={this.state.lastName} /> </div> ) } } サブコンポーネントがデータを受信関数Child(props) { return <div>子コンポーネントはデータを受け取ります: {props.name}</div> } コンポーネント通信 - 子から親へアイデアコールバック関数を使用すると、親コンポーネントがコールバックを提供し、子コンポーネントがそれを呼び出し、渡されるデータがコールバック関数のパラメーターとして使用されます。 ステップ1. 親コンポーネント 1. コールバック関数 f を定義します(データを受信するために使用されます) 2. 関数fを属性の値として子コンポーネントに渡す 2. サブコンポーネント 1. 小道具を使ってfを取得する 2. fを呼び出して子コンポーネントのデータを渡す コアコード親コンポーネントは関数を提供し、それを子コンポーネントに渡します クラス Parent は React.Component を拡張します { 州: { 数: 100 } f = (数値) => { console.log('サブコンポーネントデータを受信しました', num) } 与える() { 戻る ( <div> 子コンポーネント: <Child f={this.f} /> </div> ) } } 子コンポーネントは関数を受け取り、 クラスChildはReact.Componentを拡張します。 ハンドルクリック = () => { // 親コンポーネントから渡されたプロパティを呼び出し、パラメータ this.props.f(100) を渡します。 } 戻る ( <button onClick={this.handleClick}>クリックすると親コンポーネントにデータが渡されます</button> ) } まとめ子から親へ: 親コンポーネントで定義されたメソッドを子コンポーネントで呼び出し、必要に応じてパラメータを渡します。 コンポーネント通信 - ブラザーコンポーネントReact には兄弟コンポーネントというものはなく、状態の昇格のみがあります。 アイデア
コアコード
React をインポートします。{ コンポーネント } を 'react' からインポートします。 'react-dom' から ReactDOM をインポートします。 './Jack' から Jack をインポートします './Rose' から Rose をインポートします クラスAppはComponentを拡張します{ // 1. 状態が親コンポーネントに昇格される state = { メッセージ: ''、 } 与える() { 戻る ( <div> <h1>私はアプリコンポーネントです</h1> <ジャックは言う={this.changeMsg}></ジャック> 2. 子コンポーネントにステータスを表示する*/ <ローズ メッセージ = {this.state.msg}></ローズ> </div> ) } changeMsg = (メッセージ) => { this.setState({ メッセージ、 }) } } // レンダリングコンポーネント ReactDOM.render(<App />, document.getElementById('root')) React をインポートします。{ コンポーネント } を 'react' からインポートします。 デフォルトのクラスJackをエクスポートし、Componentを拡張します。 与える() { 戻る ( <div> <h3>私はジャックコンポーネントです</h3> <button onClick={this.say}>発言</button> </div> ) } 言う = () => { this.props.say('あなたがジャンプすると私が見る') } } React をインポートします。{ コンポーネント } を 'react' からインポートします。 デフォルトクラスRoseをエクスポートし、Componentを拡張します。 与える() { 戻る ( <div> <h3>私はローズコンポーネントです - {this.props.msg}</h3> </div> ) } } コンポーネント通信 - レベル間コンポーネント通信Vueでクロスレベルコンポーネント通信を使用する場合は、Contextを使用する必要があります。 コンテキストを使用する手順3 つのステップがあります。 1. createContextメソッドをインポートして呼び出し、結果からプロバイダとコンシューマのコンポーネントを分解します。 'react' から {createContext} をインポートします。 const { プロバイダー、コンシューマー } = createContext() 2. プロバイダコンポーネントを使用してルートコンポーネントをラップし、値属性を通じて共有するデータを提供します。 戻る ( <プロバイダー値={ここに渡すデータを入力してください}> <ルートコンポーネントの内容/> </プロバイダー> ) 3. 子孫コンポーネントでは、ステップ2でエクスポートしたコンシューマーコンポーネントでコンポーネント全体をラップします。 戻る ( <消費者> { (データ) => { // ここでのパラメータデータはプロバイダーから渡されたデータを自動的に受け取ります // console.log(data) <コンポーネントコンテンツ> を返します。 } } </消費者> ) 着陸コード
'react' から {createContext} をインポートします。 const { プロバイダー、コンシューマー } = createContext() エクスポート { コンシューマー、プロバイダー } ルートコンポーネントの変換 './context' から { Provider } をインポートします。 与える () { 戻る ( <プロバイダー値={{ num: this.state.num }}> <div> ルート コンポーネント、番号: {this.state.num} <親 /> <おじさん /> </div> </プロバイダー> ) } 子孫コンポーネント 'react' から React をインポートします './context' から Consumer をインポートします。 デフォルトのクラスUncleをエクスポートし、React.Componentを拡張します。 与える () { 戻る ( <消費者> {(データ) => { <div>I am Uncle コンポーネント、{data.num} を返します。 }} </消費者> ) } } 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: ウェブデザインには目的、アイデア、思考、そして粘り強さがなければならない
>>: フロントエンド開発者に何百万ドルもの価値をもたらす 10 のスキル
目次セマフォNginx ホットデプロイメント上記のブログ投稿に従ってください。ファイアウォールをオフ...
コードを書くとき、2 つのファイル間の違い、または同じファイルの異なるバージョン間の違いを知る必要が...
docker-compose でコンテナ ポートを公開する方法は、ports と expose の ...
目次メイクファイルMakefile の命名とルールMakefile の仕組みMakefile変数Ma...
序文ブロガーはアイデアIDEを使用しています。アイデア公式が最近サードパーティのアクティベーションサ...
私たちが毎日使っているブラウザや Word 文書のスクロール バーはなぜ右側にあるのでしょうか。多く...
BGCOLOR 属性を使用して、行の背景色を設定できます。基本的な構文<TR BGcolor...
最近、ブルートフォース攻撃によるサーバのクラッキングが頻発しています。侵入行為を大まかに分析し、よく...
序文Linux システムの HugePages と Oracle データベースの最適化については、関...
序文この記事では、主にライブラリ内のすべてのテーブルを返すMysql8.0ドライバgetTables...
目次1. ソフトウェアとシステムイメージ2. 仮想マシンを作成する3. CentOS8をインストール...
目次1. インデックス署名とは何ですか? 2. インデックス署名構文3. インデックス署名に関する注...
この記事では、例を使用して、MySQL 累積集計の原理と使用方法を説明します。ご参考までに、詳細は以...
1. IPアドレスを設定する前に、まずifconfigを使用してネットワークカード情報を表示し、ネッ...
問題を見つける最近、プロジェクトで問題が発生しました。接続が多すぎるため、「接続が多すぎます」という...