RenderPropsがReactアプリケーションの構築にどのように役立つかを学ぶ
コンポーネント間で状態を共有するために使用される一般的なパターンは、children
小道具。
コンポーネントJSX内でレンダリングできます{this.props.children}
これは、親コンポーネントに子として渡されたJSXを自動的に挿入します。
class Parent extends React.Component {
constructor(props) {
super(props)
this.state = {
/*...*/
}
}
render() {
return <div>{this.props.children}</div>
}
}
const Children1 = () => {}
const Children2 = () => {}
const App = () => (
<Parent>
<Children1 />
<Children2 />
</Parent>
)
ただし、ここには問題があります。親コンポーネントの状態に子からアクセスできないということです。
状態を共有できるようにするには、レンダープロップコンポーネントを使用する必要があります。コンポーネントを親コンポーネントの子として渡す代わりに、関数を渡して実行します。{this.props.children()}
。関数は引数を受け入れることができます:
class Parent extends React.Component {
constructor(props) {
super(props)
this.state = { name: 'Flavio' }
}
render() {
return <div>{this.props.children(this.state.name)}</div>
}
}
const Children1 = props => {
return <p>{props.name}</p>
}
const App = () => <Parent>{name => <Children1 name={name} />}</Parent>
を使用する代わりにchildren
非常に特殊な意味を持つpropは、任意のpropを使用できるため、同じコンポーネントでこのパターンを複数回使用できます。
class Parent extends React.Component {
constructor(props) {
super(props)
this.state = { name: 'Flavio', age: 35 }
}
render() {
return (
<div>
<p>Test</p>
{this.props.someprop1(this.state.name)}
{this.props.someprop2(this.state.age)}
</div>
)
}
}
const Children1 = props => {
return <p>{props.name}</p>
}
const Children2 = props => {
return <p>{props.age}</p>
}
const App = () => (
<Parent
someprop1={name => <Children1 name={name} />}
someprop2={age => <Children2 age={age} />}
/>
)
ReactDOM.render(<App />, document.getElementById(‘app’))
私の無料ダウンロードReactハンドブック
その他の反応チュートリアル:
- Reactの簡単なアプリの例:APIを介してGitHubユーザー情報を取得する
- Reactでシンプルなカウンターを構築する
- React開発用のVSCodeセットアップ
- Reactルーターを介して小道具を子コンポーネントに渡す方法
- ElectronとReactでアプリを作成する
- チュートリアル:Reactを使用してスプレッドシートを作成する
- Reactを学ぶためのロードマップ
- Reduxの使い方を学ぶ
- JSXの使用を開始する
- スタイル付きコンポーネント
- ReduxSagaの紹介
- Reactルーターの紹介
- Reactの紹介
- コンポーネントを反応させる
- 仮想DOM
- Reactイベント
- 反応状態
- 小道具に反応する
- Reactフラグメント
- React Context API
- PropTypesに反応する
- Reactの概念:宣言型
- React:クリック時に別のコンポーネントを表示する方法
- ReactJSX内でループする方法
- 小道具とReactの状態
- jQueryまたはReactを使用する必要がありますか?
- Reactを使用するために知っておく必要のあるJavaScriptの量はどれくらいですか?
- ギャツビー入門
- ReactでDOM要素を参照する方法
- Reactにおける一方向のデータフロー
- 高次コンポーネントに反応する
- Reactライフサイクルイベント
- Reactのコンセプト:不変性
- Reactのコンセプト:純度
- Reactフックの紹介
- create-react-appの紹介
- Reactのコンセプト:構成
- React:プレゼンテーションコンポーネントとコンテナコンポーネント
- Reactでのコード分割
- Reactを使用したサーバー側のレンダリング
- Reactのインストール方法
- ReactのCSS
- ReactでのSASSの使用
- Reactでのフォームの処理
- React StrictMode
- Reactポータル
- Reactレンダリングプロップ
- Reactコンポーネントのテスト
- Reactのイベントハンドラーにパラメーターを渡す方法
- Reactでエラーを処理する方法
- JSXで複数の要素を返す方法
- Reactでの条件付きレンダリング
- React、小道具を子コンポーネントに転送する方法
- Reactで入力要素の値を取得する方法
- useStateReactフックの使用方法
- useCallbackReactフックの使用方法
- useEffectReactフックの使用方法
- useMemoReactフックの使用方法
- useRefReactフックの使用方法
- useContextReactフックの使用方法
- useReducerReactフックの使用方法
- Reactアプリを同じオリジンのバックエンドに接続する方法
- リーチルーターチュートリアル
- React開発ツールの使用方法
- Reactを学ぶ方法
- Reactアプリケーションをデバッグする方法
- ReactでHTMLをレンダリングする方法
- `dangerouslySetInnerHTML`を修正する方法がReactのエラーと一致しませんでした
- Reactログインフォームの状態とブラウザの自動入力に関する問題を修正する方法
- ローカルホスト上のReactアプリでHTTPSを構成する方法
- Reactの「別のコンポーネントのレンダリング中にコンポーネントを更新できない」エラーを修正する方法
- 条件内でReactフックを使用できますか?
- オブジェクトでのuseStateの使用:更新方法
- ReactとTailwindを使用してコードのブロックを移動する方法
- React、DOMに追加されたときにReactでアイテムにフォーカスします
- 反応、ダブルクリックでテキストを編集