Reactにおけるコンポーネントレンダリングの詳細説明
今回は、React でのコンポーネント レンダリングの使用について詳しく説明します。React でコンポーネント レンダリングを使用する際の 注意事項 は何ですか?実際のケースを見てみましょう。
コンポーネントレンダリング - 条件付きレンダリング(動的コンポーネント)ログイン状態であればログアウト、そうでなければログイン状態など、多くの場合コンポーネントは動的にレンダリングされますimport React from 'react' let Login = (props) => { return <input type="button" value="login" onClick={props.click}/>; } let Logout = (props) => { return <input type="button" value="logout" onClick={props.click}/>; } export default class CP extends React.Component{ state = { status: 0 } login(){ this.setState({status: 1}) } logout(){ this.setState({status: 0}) } render(){ let button = null; if(this.state.status == 0){ button = <Login click={this.login.bind(this)}/> } else { button = <Logout click={this.logout.bind(this)} /> } return <p>{button}</p> } }
import React from 'react'
import ReactDOM from 'react-dom'
let Component1 = () => {
let lis = [<li key="Javascript">Javascript</li>, <li key="Vue">Vue</li>, <li key="React">React</li>]
return (
<p>
<ul>
{lis}
</ul>
</p>
)
}
ReactDOM.render(
<Component1 />
document.getElementById('app')
)
ログイン後にコピー
リストレンダリング - ループforimport React from 'react' import ReactDOM from 'react-dom' let Component1 = () => { let lis = [<li key="Javascript">Javascript</li>, <li key="Vue">Vue</li>, <li key="React">React</li>] return ( <p> <ul> {lis} </ul> </p> ) } ReactDOM.render( <Component1 /> document.getElementById('app') )
import React from 'react'
import ReactDOM from 'react-dom'
let Component1 = () => {
let data = ['Javascript', 'Vue', 'React']
let lis = [];
for(let frm of frms){
lis.push(<li key={frm}>{frm}</li>)
}
return (
<p>
<ul>
{lis}
</ul>
</p>
)
}
ReactDOM.render(
<Component1 />
document.getElementById('app')
)
ログイン後にコピー
リストレンダリング - ループマップimport React from 'react' import ReactDOM from 'react-dom' let Component1 = () => { let data = ['Javascript', 'Vue', 'React'] let lis = []; for(let frm of frms){ lis.push(<li key={frm}>{frm}</li>) } return ( <p> <ul> {lis} </ul> </p> ) } ReactDOM.render( <Component1 /> document.getElementById('app') )
import React from 'react'
import ReactDOM from 'react-dom'
let Component1 = () => {
let data = ['Javascript', 'Vue', 'React']
let lis = data.map((frm) => {
return <li key={frm}>{frm}</li>
});
return (
<p>
<ul>
{lis}
</ul>
</p>
)
}
ReactDOM.render(
<Component1 />
document.getElementById('app')
)
ログイン後にコピー
リストレンダリング - オブジェクト配列import React from 'react' import ReactDOM from 'react-dom' let Component1 = () => { let data = ['Javascript', 'Vue', 'React'] let lis = data.map((frm) => { return <li key={frm}>{frm}</li> }); return ( <p> <ul> {lis} </ul> </p> ) } ReactDOM.render( <Component1 /> document.getElementById('app') )
import React from 'react'
import ReactDOM from 'react-dom'
class Component1 extends React.Component {
constructor(props){
super(props)
}
static defaultProps = {
students: [
{id: 1, name: 'Tom', age: 18, gender: 1},
{id: 2, name: 'Sam', age: 22, gender: 1},
{id: 3, name: 'Lucy', age: 20, gender: 0}
]
}
getKeys(item = {}){
return Object.keys(item)
}
render(){
return (
<table>
<thead>
<tr>
{
this.getKeys(this.props.students[0]).map((key) => {
return <th key={key}>{key}</th>
})
}
</tr>
</thead>
<tbody>
{
this.props.students.map((obj) => {
return (
<tr key={obj.id}>
{
this.getKeys(obj).map((key, idx) => {
return <td key={key + idx}>{obj[key]}</td>
})
}
</tr>
)
})
}
</tbody>
</table>
)
}
}
ReactDOM.render(
<Component1 />,
document.getElementById('app')
)
ログイン後にコピー
リストレンダリング - キー(Keys)import React from 'react' import ReactDOM from 'react-dom' class Component1 extends React.Component { constructor(props){ super(props) } static defaultProps = { students: [ {id: 1, name: 'Tom', age: 18, gender: 1}, {id: 2, name: 'Sam', age: 22, gender: 1}, {id: 3, name: 'Lucy', age: 20, gender: 0} ] } getKeys(item = {}){ return Object.keys(item) } render(){ return ( <table> <thead> <tr> { this.getKeys(this.props.students[0]).map((key) => { return <th key={key}>{key}</th> }) } </tr> </thead> <tbody> { this.props.students.map((obj) => { return ( <tr key={obj.id}> { this.getKeys(obj).map((key, idx) => { return <td key={key + idx}>{obj[key]}</td> }) } </tr> ) }) } </tbody> </table> ) } } ReactDOM.render( <Component1 />, document.getElementById('app') )
Reactのための処理です仮想 DOM から実際の DOM への変換であり、DOM 自体はオブジェクトであるため、デフォルトでは一意の識別子を持たないため、手動で指定する必要があります。
キーは、どの項目が変更、追加、または削除されたかを React が識別するのに役立ちます。配列内の各要素は、一意で不変のキーによって識別される必要があります。
キーはリストのレンダリングで使用され、兄弟要素間で一意である必要があります。
コンポーネントのレンダリング - コンポーネントの子ノード
コンポーネントは DOM ノードとして呼び出されるため、コンポーネントには子ノードを含めることができます。 React は this.props.children
を通じてコンポーネントの子ノードを取得します。通常、this.props.children
には次のような状況があります
-
現在のコンポーネントに子ノードがない場合は未定義です
this.props.children
来获取,通常this.props.children
会有以下几种情况如果当前组件没有子节点,它就是 undefined
如果有一个子节点,数据类型是 object
如果有多个子节点,数据类型就是 array
为了解决这种数据类型不一致导致在使用的过程中要不断判断的情况,React 提供了一个方法
Reacth.Children
- 子ノードがある場合は、データ型
はobject
子ノードが複数ある場合のデータ型はarray
Inこのデータ型の不一致を解決するために、使用中に継続的な判断が必要になります。React はこの属性を処理するメソッド Reactth.Children
を提供します。 var Component1 = React.createClass({
render: function(){
return (
<p>
{
React.Children.map(this.props.children, function(childNode){
return <li>{childNode}</li>
})
}
</p>
);
}
})
ReactDOM.render(
<Component1>
<span>Tom</span>
<span>Sam</span>
</Component1>, document.getElementById('p1'));
以上がReactにおけるコンポーネントレンダリングの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











CrystalDiskMark は、シーケンシャルおよびランダムの読み取り/書き込み速度を迅速に測定する、ハード ドライブ用の小型 HDD ベンチマーク ツールです。次に、編集者が CrystalDiskMark と Crystaldiskmark の使用方法を紹介します。 1. CrystalDiskMark の概要 CrystalDiskMark は、機械式ハード ドライブとソリッド ステート ドライブ (SSD) の読み取りおよび書き込み速度とパフォーマンスを評価するために広く使用されているディスク パフォーマンス テスト ツールです。 ). ランダム I/O パフォーマンス。これは無料の Windows アプリケーションで、使いやすいインターフェイスとハード ドライブのパフォーマンスのさまざまな側面を評価するためのさまざまなテスト モードを提供し、ハードウェアのレビューで広く使用されています。

foobar2000 は、音楽リソースをいつでも聴くことができるソフトウェアです。あらゆる種類の音楽をロスレス音質で提供します。音楽プレーヤーの強化版により、より包括的で快適な音楽体験を得ることができます。その設計コンセプトは、高度なオーディオをコンピュータ上で再生可能 デバイスを携帯電話に移植し、より便利で効率的な音楽再生体験を提供 シンプルでわかりやすく、使いやすいインターフェースデザイン 過度な装飾や煩雑な操作を排除したミニマルなデザインスタイルを採用また、さまざまなスキンとテーマをサポートし、自分の好みに合わせて設定をカスタマイズし、複数のオーディオ形式の再生をサポートする専用の音楽プレーヤーを作成します。過度の音量による聴覚障害を避けるために、自分の聴覚の状態に合わせて調整してください。次は私がお手伝いさせてください

Windows オペレーティング システムは世界で最も人気のあるオペレーティング システムの 1 つであり、その新バージョン Win11 が大きな注目を集めています。 Win11 システムでは、管理者権限の取得は重要な操作であり、管理者権限を取得すると、ユーザーはシステム上でより多くの操作や設定を実行できるようになります。この記事では、Win11システムで管理者権限を取得する方法と、権限を効果的に管理する方法を詳しく紹介します。 Win11 システムでは、管理者権限はローカル管理者とドメイン管理者の 2 種類に分かれています。ローカル管理者はローカル コンピュータに対する完全な管理権限を持っています

NetEase Mailbox は、中国のネットユーザーに広く使用されている電子メール アドレスとして、その安定した効率的なサービスで常にユーザーの信頼を獲得してきました。 NetEase Mailbox Master は、携帯電話ユーザー向けに特別に作成された電子メール ソフトウェアで、電子メールの送受信プロセスが大幅に簡素化され、電子メールの処理がより便利になります。 NetEase Mailbox Master の使い方と具体的な機能について、以下ではこのサイトの編集者が詳しく紹介しますので、お役に立てれば幸いです。まず、モバイル アプリ ストアで NetEase Mailbox Master アプリを検索してダウンロードします。 App Store または Baidu Mobile Assistant で「NetEase Mailbox Master」を検索し、画面の指示に従ってインストールします。ダウンロードとインストールが完了したら、NetEase の電子メール アカウントを開いてログインします。ログイン インターフェイスは次のとおりです。

クラウド ストレージは今日、私たちの日常生活や仕事に欠かせない部分になっています。中国有数のクラウド ストレージ サービスの 1 つである Baidu Netdisk は、強力なストレージ機能、効率的な伝送速度、便利な操作体験により多くのユーザーの支持を得ています。また、重要なファイルのバックアップ、情報の共有、オンラインでのビデオの視聴、または音楽の聴きたい場合でも、Baidu Cloud Disk はニーズを満たすことができます。しかし、Baidu Netdisk アプリの具体的な使用方法を理解していないユーザーも多いため、このチュートリアルでは Baidu Netdisk アプリの使用方法を詳しく紹介します。まだ混乱しているユーザーは、この記事に従って詳細を学ぶことができます。 Baidu Cloud Network Disk の使用方法: 1. インストール まず、Baidu Cloud ソフトウェアをダウンロードしてインストールするときに、カスタム インストール オプションを選択してください。

OracleSQL の除算演算の詳細な説明 OracleSQL では、除算演算は一般的かつ重要な数学演算であり、2 つの数値を除算した結果を計算するために使用されます。除算はデータベース問合せでよく使用されるため、OracleSQL での除算演算とその使用法を理解することは、データベース開発者にとって重要なスキルの 1 つです。この記事では、OracleSQL の除算演算に関する関連知識を詳細に説明し、読者の参考となる具体的なコード例を示します。 1. OracleSQL での除算演算

MetaMask (中国語ではリトル フォックス ウォレットとも呼ばれます) は、無料で評判の高い暗号化ウォレット ソフトウェアです。現在、BTCC は MetaMask ウォレットへのバインドをサポートしており、バインド後は MetaMask ウォレットを使用してすぐにログイン、値の保存、コインの購入などが可能になり、初回バインドで 20 USDT のトライアル ボーナスも獲得できます。 BTCCMetaMask ウォレットのチュートリアルでは、MetaMask の登録方法と使用方法、および BTCC で Little Fox ウォレットをバインドして使用する方法を詳しく紹介します。メタマスクウォレットとは何ですか? 3,000 万人を超えるユーザーを抱える MetaMask Little Fox ウォレットは、現在最も人気のある暗号通貨ウォレットの 1 つです。無料で使用でき、拡張機能としてネットワーク上にインストールできます。

Appleは火曜日にiOS 17.4アップデートを公開し、iPhoneに多数の新機能と修正をもたらした。このアップデートには新しい絵文字が含まれており、EU ユーザーは他のアプリ ストアから絵文字をダウンロードすることもできます。さらに、このアップデートでは iPhone のセキュリティ制御も強化され、より多くの「盗難デバイス保護」設定オプションが導入され、ユーザーにより多くの選択肢と保護が提供されます。 「iOS17.3では、「盗難デバイス保護」機能が初めて導入され、ユーザーの機密情報のセキュリティが強化されています。ユーザーが自宅やその他の身近な場所から離れている場合、この機能ではユーザーは最初に生体認証情報を入力する必要がありますApple ID パスワードの変更や盗難デバイス保護の無効化など、特定のデータにアクセスして変更するには、情報を再度入力する必要があります。
