コンポーネント通信の概要コンテンツ
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 のスキル
> MySQL 5.7 クラスタ マスターとスレーブをデプロイする (テストのみ)イメージバー...
この記事では、MySQL 5.7.17のインストールと設定方法を参考までに紹介します。具体的な内容は...
私は2年間運用保守に携わり、多くのコマンドを使用しました。特定のLinuxコマンドを習得すると、どれ...
html4:コードをコピーコードは次のとおりです。 <フォーム> <p>&l...
面接の経験によっては、CSS に関する質問がよく見られ、CSS を使用して三角形を描画する方法につい...
ここでは、dockerがインストールされたcentosサーバーを紹介し、リモートリンクサービスを開始...
イベント委任を使用してメッセージ ボード機能を実装します。 <!DOCTYPE html>...
目次序文ブラウザコンパイル版ローカルプリコンパイルバージョン要約する参照する序文vue3サンドボック...
この記事では、二次リンク効果を実現するためのReact+tsの具体的なコードを参考までに共有します。...
目次序文1. Linux は yum ソースを変更します (MYSQL のインストールが遅い場合は試...
Macはシェル(ターミナル)SSHを使用してリモートサーバーに接続します前提条件: 接続する必要があ...
1. ユーザーにルーチン作成権限がある場合は、プロシージャ | 関数を作成できます。 2. ユーザー...
1. 概要MySQL データベースの日常的な操作とメンテナンスにおいて、ユーザーが誤ってデータを削...
1. インデックスの重要性インデックスは、列に特定の値を持つ行をすばやく見つけるために使用されます。...
1. PVとIPの統計一日のPV(ページビュー)をカウントする cat access.log | ...