1. 文脈1. 使用シナリオ子孫コンポーネントに値を渡したいシナリオを想像してください。どうすればよいでしょうか? 小道具を使って層ごとに受け渡すと、非常に面倒になります。 より良い方法: 2. 使用手順
const { プロバイダー、コンシューマー } = React.createContext()
<プロバイダー> <div className="アプリ"> <子供1 /> </div> </プロバイダー>
<プロバイダー値="ピンク">
<消費者> {data => <span>データ パラメータは受信したデータを表します -- {data}</span>} </消費者> 3. 結論
2. 小道具の詳細1. 子供の財産children 属性: コンポーネント タグの子ノードを表します。コンポーネントタグに子ノードがある場合、propsにはこの属性が設定されます。 childrenプロパティは通常のpropsと同じで、その値は何でもかまいません(テキスト、ラベル、コンポーネント、関数など)。 コードは次のとおりです(例): 関数Hello(props) { 戻る ( <div> コンポーネントの子ノード: {props.children} </div> ) } <Hello>私は子ノードです</Hello> 2. 小道具の検証コンポーネントの場合、props は外部データのコンテナであり、コンポーネント ユーザーによって渡されるデータの形式は保証されません。 受信データの形式が正しくない場合、コンポーネントでエラーが発生する可能性があります。 重要な問題: 構文エラーメッセージ以外の追加のエラーメッセージがない コードは次のとおりです(例): // 作成されたコンポーネント function App(props) { 定数 arr = props.colors const list = arr.map((item, index) => <li key={index}>{item}</li>) 戻る ( <ul>{リスト}</ul> ) } // コンポーネントを使用する場合 <App colors={19} /> プロパティ検証: コンポーネントを作成するときにプロパティのタイプと形式を指定できます。 目的: コンポーネントの使用時にプロパティによって発生するエラーをキャプチャし、明確なエラープロンプトを表示して、コンポーネントの堅牢性を高めます。 3. Props検証の使用手順
'prop-types' から PropTypes をインポートします 関数App(props) { 戻る ( <h1>こんにちは、{props.colors}</h1> ) } App.propTypes = { // colors プロパティは配列型であることが合意されています // 型が正しくない場合は、エラー分析を容易にするために明確なエラーが報告されます colors: PropTypes.array } 4. Props検証制約ルール一般的な型: React要素タイプ: 必須: 特定の構造のオブジェクト: // 共通型optionalFunc: PropTypes.func, // 必須関数: PropTypes.func.isRequired、 // 特定の構造のオブジェクトoptionalObjectWithShape: PropTypes.shape({ 色: PropTypes.文字列、 フォントサイズ: PropTypes.number }) 5. デフォルトのプロパティ値シナリオ: ページネーションコンポーネント → ページあたりに表示される項目数 機能: プロパティのデフォルト値を設定します。これは、プロパティが渡されない場合に有効になります。 関数App(props) { 戻る ( <div> props のデフォルト値はここに表示されます: {props.pageSize} </div> ) } // デフォルト値を設定する App.defaultProps = { ページサイズ: 10 } // pageSize 属性を渡さないでください <App /> 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
親ノードの親ノード、例えば、このような段落がありますHTML:コードをコピーコードは次のとおりです。...
MySQL 5.7 を新しくインストールしました。ログインすると、パスワードが間違っているというメッ...
目次序文1. エラーログ2. バイナリログ1. バイナリログを有効にする2. バイナリログ形式3. ...
1. どのような問題に直面しましたか?標準 SQL では、通常、次の SQL 挿入ステートメントを記...
レスポンシブ レイアウト システムは、今日の一般的な CSS フレームワークではすでに非常に一般的で...
WeChatアプレットプロジェクトでは、開発モジュールに手書き署名機能が含まれ、WeChatアプレッ...
この記事では、例を使用して、MySQL ストアド プロシージャにおけるカーソル (DECLARE) ...
<br />長年の専門的なアートデザイン教育を通じて「美とは何か」を学びましたが、「美を...
この記事は主にMybatisでの動的SQL文の解析について紹介します。この記事のサンプルコードは非常...
目次オープニングシーンv-for を使用した直接レンダリングカスタムコンポーネントで直接レンダリング...
正式な環境でアップグレードする場合は、データと重要な設定をバックアップしてください。アップグレードに...
初回の読み込みを高速化できるルートの遅延読み込みをどうして忘れられるでしょうか?ルーティングの遅延読...
導入定期的にヘルスチェックを送信して、アップストリーム グループ内の HTTP サーバーのヘルスを監...
CentOS 8 が正式にリリースされました! CentOS は Red Hat の再配布ポリシー...
この記事では、トランザクション、インデックス、ロックなどの MySQL の知識ポイントの原理と使用法...