コンポーネントの props (props はオブジェクトです)機能: コンポーネントに渡されたデータを受信する 特徴:
小道具<div id="test1"></div> <div id="test2"></div> <div id="test3"></div> <!-- react core ライブラリをインポート --> <script src="../js/react.development.js"></script> <!-- react-dom を導入して、DOM を操作するための react をサポートする --> <script src="../js/react-dom.development.js"></script> <!-- jsx を js に変換するには babel を導入します --> <script src="../js/babel.min.js"></script> <スクリプトタイプ='text/babel'> // コンポーネントを作成する class Person extends React.Component{ 与える() { console.log(これを); const{名前、年齢、性別} = this.props 戻る( <ul> <li>名前: {name}</li> <li>性別: {sex}</li> <li>年齢: {age+1}</li> </ul> ) } } // コンポーネントをページにレンダリングします ReactDOM.render(<Person name="jerry" age={19} sex="男" />,document.getElementById('test1')) ReactDOM.render(<Person name="tom" age={18} sex="女" />,document.getElementById('test2')) const p = {name:'老刘',age:18,sex:'女'} // ReactDOM.render(<人名={p.name} 年齢={p.age} 性別={p.sex} />,document.getElementById('test3')) ReactDOM.render(<Person {...p} />,document.getElementById('test3')) </スクリプト> 小道具の制限
<div id="test1"></div> <div id="test2"></div> <div id="test3"></div> <!-- react core ライブラリをインポート --> <script src="../js/react.development.js"></script> <!-- react-dom を導入して、DOM を操作するための react をサポートする --> <script src="../js/react-dom.development.js"></script> <!-- jsx を js に変換するには babel を導入します --> <script src="../js/babel.min.js"></script> <!-- コンポーネント タグの属性を制限するために使用される prop-types を導入します。導入後、世界にはもう 1 つのオブジェクト PropTypes があります --> <script src="../js/prop-types.js"></script> <スクリプトタイプ='text/babel'> // コンポーネントを作成する class Person extends React.Component{ 与える() { console.log(これを); const{名前、年齢、性別} = this.props 戻る( <ul> <li>名前: {name}</li> <li>性別: {sex}</li> <li>年齢: {age+1}</li> </ul> ) } } // 制限ルール Person.propTypes = { // 名前の内容を文字列に制限する isRequired は、内容が必須であり省略できないことを意味します name:PropTypes.string.isRequired, // 性別を文字列に制限する sex: PropTypes.string, // 年齢を数値に制限する age: PropTypes.number, // 発言を関数speak: PropTypes.funcに制限する } Person.defaultProps = { sex:'male', // 性別のデフォルト値は男性 age:18, 話す: 関数() { [1]を返す; } } // コンポーネントをページにレンダリングします ReactDOM.render(<Person name="jerry" age={19} />,document.getElementById('test1')) ReactDOM.render(<Person name="tom" age={18} sex="女" />,document.getElementById('test2')) const p = {name:'老刘',age:18,sex:'女'} // ReactDOM.render(<人名={p.name} 年齢={p.age} 性別={p.sex} />,document.getElementById('test3')) ReactDOM.render(<Person {...p} />,document.getElementById('test3')) </スクリプト> Vue のプロパティの制限ご存知のこれらのタイプなど、コンポーネント プロパティの検証要件を指定できます。要件が満たされていない場合、Vue はブラウザ コンソールで警告を表示します。これは、他の人が使用するコンポーネントを開発する場合に特に役立ちます。 プロパティの検証方法をカスタマイズするには、文字列の配列ではなく、プロパティ値の検証要件を持つオブジェクトを提供できます。例えば: Vue.component('my-component', { 小道具: { // 基本的な型チェック (`null` と `undefined` はすべての型検証に合格します) propA: 数値、 // 複数の可能な型 propB: [String, Number], // 必須の文字列 propC: { タイプ: 文字列、 必須: true }, // デフォルト値を持つ数値プロパティ: { タイプ: 数値、 デフォルト: 100 }, // デフォルト値を持つオブジェクト propE: { タイプ: オブジェクト、 // オブジェクトまたは配列のデフォルト値はファクトリー関数から取得する必要があります default: function () { 戻り値: 'hello' } } }, // カスタム検証関数 propF: { バリデータ: 関数 (値) { // この値は、次の文字列のいずれかと一致する必要があります。 return ['success', 'warning', 'danger'].indexOf(value) !== -1 } } } })
プロパティはコンポーネント インスタンスが作成される前に検証されるため、インスタンス プロパティ (データ、計算など) はデフォルト関数または検証関数では使用できません。 型チェック 弦 番号 ブール 配列 物体 日付 関数 シンボル さらに、type は、instanceof でチェックされるカスタム コンストラクターにすることもできます。たとえば、次のような既成のコンストラクターがあるとします。 関数 Person (firstName, lastName) { this.firstName = ファーストネーム this.lastName = 姓 } 以下を使用できます: Vue.component('ブログ投稿', { 小道具: { 著者: 人物 } }) author プロパティの値が新しい Person によって作成されたことを確認します。 React における props の使用と制限に関するこの記事はこれで終わりです。React props の制限に関する詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL がユーザー名とパスワードの漏洩を引き起こす可能性のある Riddle の脆弱性を公開
>>: Nginx プロキシを使用してインターネットを閲覧する方法
HTML デザインパターン学習ノート今週は主にHTMLデザインパターンを学びました。学習内容をまとめ...
目次Reactにaxios依存関係をインストールして導入するGETリクエストにaxiosを使用するa...
IE8には複数の互換モードがあります。 IE プラットフォームの設計者である Chris Wilso...
この記事では、Vueを使用して特定の領域に透かしを描く方法を紹介します。具体的な内容は次のとおりです...
特定のデータの一括更新処理において、特定のステータスが固定値に更新されるなど、更新するフィールドの値...
目次動的パーティクル効果は次のとおりです。プラグインをインストールする動的パーティクル効果は次のとお...
最近では、ソフトウェアやウェブサイトのいずれの作業であっても、設計時に「ユーザー エクスペリエンス」...
1. Linuxシステムにクロスシステムファイル転送ツールをインストールするルートユーザーのルートデ...
ログイン dockerログインdocker login コマンドを実行し、ユーザー名、パスワード、メ...
多くのウェブサイトを閲覧すると、ブラウザのアドレスバーの前に小さなアイコンがあり、ブラウザのタブの位...
uwsgi+nginx プロキシ Django をデプロイする場合、uwsgi を使用したアクセスは...
目次最初にコールバック関数を使用するes6 非同期処理モデルこの非同期モデルに合わせたAPI: pr...
過去 2 日間、ワークベンチが Alibaba Cloud Server に接続できない問題を解決す...
削除する方法はいくつかあります:リンクを直接追加するonfocus="this.blur(...
目次開発の際には、機能を段階的に分析して実装することで、明確な考え方を保つことができます。 1. フ...