Reactにおけるコンポーネントの定義と使い方を詳しく解説
今回は React でのコンポーネント定義の使用について詳しく説明します。 React でコンポーネント定義を使用する際の 注意事項 は何ですか?実際のケースを見てみましょう。
コンポーネントコンポーネントを使用すると、UI を独立した再利用可能なウィジェットに分割し、各ウィジェットを個別にデザインできます。 シングルページアプリケーション(SPA)で重要な役割を果たしますコンポーネントの単純な実装 - 機能コンポーネントimport React from 'react'
import ReactDOM from 'react-dom'
let Component1 = () => {
return <h1>React Component</h1>
}
ReactDOM.render(
<Component1 />,
document.getElementById('app')
)
ログイン後にコピーログイン後にコピー
クラスコンポーネント - ES5構文import React from 'react' import ReactDOM from 'react-dom' let Component1 = () => { return <h1>React Component</h1> } ReactDOM.render( <Component1 />, document.getElementById('app') )
var React = require('react');
var ReactDOM = require('react-dom')
var Component1 = React.createClass({
render: function(){
return (
<p>
<h1>Tom</h1>
<h1>Sam</h1>
</p>
)
}
})
ReactDOM.render(
<Component1 />,
document.getElementById('app')
)
ログイン後にコピーログイン後にコピー
クラスコンポーネント - ES6構文var React = require('react'); var ReactDOM = require('react-dom') var Component1 = React.createClass({ render: function(){ return ( <p> <h1>Tom</h1> <h1>Sam</h1> </p> ) } }) ReactDOM.render( <Component1 />, document.getElementById('app') )
import React from 'react'
import ReactDOM from 'react-dom'
class Component1 extends React.Component{
render(){
return (
<p>
<h1>Tom</h1>
<h1>Sam</h1>
</p>
)
}
}
ReactDOM.render(
<Component1 />,
document.getElementById('app')
)
ログイン後にコピーログイン後にコピー
効果のプレビューコンポーネントの概要
import React from 'react' import ReactDOM from 'react-dom' class Component1 extends React.Component{ render(){ return ( <p> <h1>Tom</h1> <h1>Sam</h1> </p> ) } } ReactDOM.render( <Component1 />, document.getElementById('app') )
- コンポーネント名の最初の文字は大文字にする必要があります
- 関数は仮想 DOM ノードを返します
- クラスコンポーネントには render メソッドが必要です
- render は仮想 DOM ノードを返す必要があります
- 実際には動作しますその中でもよく使われるのがクラスコンポーネントです
this.props
を使用して取得されます
機能コンポーネント
import React from 'react' import ReactDOM from 'react-dom' let Component1 = (props) => { return <h1>name-{props.name}</h1> } ReactDOM.render( <Component1 name="Sam"/>, document.getElementById('app') )
クラスコンポーネント
import React from 'react' import ReactDOM from 'react-dom' class Component1 extends React.Component{ render(){ return <h1>name-{this.props.name}</h1> } } ReactDOM.render( <Component1 name="Sam"/>, document.getElementById('app') )
DefaultProps
this.props
函数式组件
//es5 var React = require('react'); var ReactDOM = require('react-dom'); var Component1 = React.createClass({ getDefaultProps: function(){ return { name: 'Tom', age: 20 } }, render: function(){ return ( <p> <p>姓名:{this.props.name}</p> <p>年龄:{this.props.age}</p> </p> ) } }) //es6 import React from 'react'; import ReactDOM from 'react-dom'; class Component1 extends React.Component{ static defaultProps = { name: 'Tom', age: 20 } render(){ return ( <p> <h1>姓名:{this.props.name}</h1> <h1>年龄:{this.props.age}</h1> </p> ) } } //或者 Component1.defaultProps = { name: "Sam", age: 22 } //使用 ReactDOM.render(<Component1/>, document.getElementById('p1'));
类组件
import React from 'react'; import ReactDOM from 'react-dom'; import PropTypes from 'prop-types' class Component1 extends React.Component{ render(){ return ( <p> <p>姓名:{this.props.name}</p> <p>年龄:{this.props.age}</p> <p>学科:</p> <ul> { this.props.subjects.map(function(_item){ return <li>{_item}</li> }) } </ul> </p> ) } } //定义属性 name 为字符串且必须有值 Component1.propTypes = { name: PropTypes.string } ReactDOM.render(<Component1 name="Tom"/>, document.getElementById('p1'));
默认属性(DefaultProps)
组件的属性除了可以通过调用的时候以 DOM 节点属性的方式传值,也可以设置默认的属性值,如果调用的时候没有传对应的属性值,则会用默认的属性值。getDefalutProps
这个方法只会被调用一次。
import React from 'react' import ReactDOM from 'react-dom' let Component1 = () => { return <h1>React Component</h1> } ReactDOM.render( <Component1 />, document.getElementById('app') )
属性的类型规则(propTypes)
通常情况下,在定义一个组件的时候把属性定义好,会加上一些使用的条件限制,比如某些属性值的数据类型必须是数组,或者某些属性不能为空,在这个时候,可以通过 propTypes
来设置。
var React = require('react'); var ReactDOM = require('react-dom') var Component1 = React.createClass({ render: function(){ return ( <p> <h1>Tom</h1> <h1>Sam</h1> </p> ) } }) ReactDOM.render( <Component1 />, document.getElementById('app') )
prop 默认情况下是可选,常用的类型:
PropTypes.array
PropTypes.bool
PropTypes.func
PropTypes.number
PropTypes.object
PropTypes.string
PropTypes.symbol
PropTypes.any.isRequired
组件
组件使你可以将 UI 划分为一个一个独立,可复用的小部件,并可以对每个部件进行单独的设计。
在单页面应用(SPA)中扮演着重要角色
组件简单实现 —— 函数式组件
import React from 'react' import ReactDOM from 'react-dom' class Component1 extends React.Component{ render(){ return ( <p> <h1>Tom</h1> <h1>Sam</h1> </p> ) } } ReactDOM.render( <Component1 />, document.getElementById('app') )
类组件 —— ES5 语法
import React from 'react' import ReactDOM from 'react-dom' let Component1 = (props) => { return <h1>name-{props.name}</h1> } ReactDOM.render( <Component1 name="Sam"/>, document.getElementById('app') )
类组件 —— ES6 语法
import React from 'react' import ReactDOM from 'react-dom' class Component1 extends React.Component{ render(){ return <h1>name-{this.props.name}</h1> } } ReactDOM.render( <Component1 name="Sam"/>, document.getElementById('app') )
效果预览
组件小结
组件名首字母必须为大写
函数返回一个虚拟 DOM 节点
类组件必须要有 render 方法
render 必须返回一个虚拟 DOM 节点
实际工作中,类组件是常用的方式
组件属性(Props)
因为组件的调用是 html 标签的形式,而 html 标签是可以添加属性,所以在 React 的组件当中也是可以添加自定义的属性,而属性的获取则用 this.props
函数式组件
//es5 var React = require('react'); var ReactDOM = require('react-dom'); var Component1 = React.createClass({ getDefaultProps: function(){ return { name: 'Tom', age: 20 } }, render: function(){ return ( <p> <p>姓名:{this.props.name}</p> <p>年龄:{this.props.age}</p> </p> ) } }) //es6 import React from 'react'; import ReactDOM from 'react-dom'; class Component1 extends React.Component{ static defaultProps = { name: 'Tom', age: 20 } render(){ return ( <p> <h1>姓名:{this.props.name}</h1> <h1>年龄:{this.props.age}</h1> </p> ) } } //或者 Component1.defaultProps = { name: "Sam", age: 22 } //使用 ReactDOM.render(<Component1/>, document.getElementById('p1'));
类组件
import React from 'react'; import ReactDOM from 'react-dom'; import PropTypes from 'prop-types' class Component1 extends React.Component{ render(){ return ( <p> <p>姓名:{this.props.name}</p> <p>年龄:{this.props.age}</p> <p>学科:</p> <ul> { this.props.subjects.map(function(_item){ return <li>{_item}</li> }) } </ul> </p> ) } } //定义属性 name 为字符串且必须有值 Component1.propTypes = { name: PropTypes.string } ReactDOM.render(<Component1 name="Tom"/>, document.getElementById('p1'));
默认属性(DefaultProps)
组件的属性除了可以通过调用的时候以 DOM 节点属性的方式传值,也可以设置默认的属性值,如果调用的时候没有传对应的属性值,则会用默认的属性值。getDefalutProps
コンポーネントの属性に加えて、値を DOM ノード属性の形式で渡すことができます。呼び出し時に対応する属性値が渡されない場合は、デフォルトの属性値が使用されます。 getDefalutProps
このメソッドは 1 回だけ呼び出されます。
属性タイプのルール (propTypes)
🎜 通常、コンポーネントを定義するときは、属性が定義され、いくつかの使用条件が追加されます ()。 a href="http://www.php.cn/code/222.html" target="_blank">一部の属性値のデータ型 🎜 は配列でなければなりません。現時点では、一部の属性を空にすることはできません。 、propTypes
を通じて設定できます。 🎜rrreee🎜prop はデフォルトでオプションであり、一般的に使用されるタイプ: 🎜🎜🎜🎜PropTypes.array
🎜🎜🎜🎜PropTypes.bool
🎜🎜🎜🎜 PropTypes。 func
🎜🎜🎜🎜PropTypes.number
🎜🎜🎜🎜PropTypes.object
🎜🎜🎜🎜PropTypes.string
🎜 🎜🎜 🎜PropTypes.symbol
🎜🎜🎜🎜PropTypes.any.isRequired
🎜🎜🎜🎜コンポーネント🎜🎜コンポーネントを使用すると、UI を独立した反復可能なウィジェットに分割でき、それぞれが使用されますウィジェットは個別にデザインできます。 🎜🎜シングルページアプリケーション(SPA)で重要な役割を果たします🎜🎜コンポーネントの単純な実装 - 機能コンポーネント🎜rrreee🎜クラスコンポーネント - ES5構文🎜rrreee🎜クラスコンポーネント - ES6構文🎜rrreee🎜効果のプレビュー🎜🎜コンポーネントの概要🎜🎜🎜 🎜コンポーネント名の最初の文字は大文字にする必要があります🎜🎜🎜🎜関数は仮想DOMノードを返します🎜🎜🎜🎜クラスコンポーネントにはレンダリングメソッドが必要です🎜🎜🎜🎜レンダリングは仮想DOMノードを返す必要があります🎜🎜🎜🎜実際の作業その中でもよく使われるのがクラスコンポーネントです🎜🎜🎜🎜コンポーネントのプロパティ(Props)🎜🎜コンポーネントはhtmlタグの形で呼び出され、htmlタグには属性を追加できるため、Reactコンポーネントにもカスタム属性を追加することができます。 、プロパティは this.props
を使用して取得されます🎜機能コンポーネント
rrreeeクラスコンポーネント
rrreeeDefaultProps
🎜コンポーネントの属性に加えて、値を DOM ノード属性の形式で渡すことができます。呼び出し時に対応する属性値が渡されない場合は、デフォルトの属性値が使用されます。
getDefalutProps
このメソッドは 1 回だけ呼び出されます。 🎜//es5
var React = require('react');
var ReactDOM = require('react-dom');
var Component1 = React.createClass({
getDefaultProps: function(){
return {
name: 'Tom',
age: 20
}
},
render: function(){
return (
<p>
<p>姓名:{this.props.name}</p>
<p>年龄:{this.props.age}</p>
</p>
)
}
})
//es6
import React from 'react';
import ReactDOM from 'react-dom';
class Component1 extends React.Component{
static defaultProps = {
name: 'Tom',
age: 20
}
render(){
return (
<p>
<h1>姓名:{this.props.name}</h1>
<h1>年龄:{this.props.age}</h1>
</p>
)
}
}
//或者
Component1.defaultProps = {
name: "Sam",
age: 22
}
//使用
ReactDOM.render(<Component1/>, document.getElementById('p1'));
ログイン後にコピーログイン後にコピーログイン後にコピー
属性的类型规则(propTypes)
//es5 var React = require('react'); var ReactDOM = require('react-dom'); var Component1 = React.createClass({ getDefaultProps: function(){ return { name: 'Tom', age: 20 } }, render: function(){ return ( <p> <p>姓名:{this.props.name}</p> <p>年龄:{this.props.age}</p> </p> ) } }) //es6 import React from 'react'; import ReactDOM from 'react-dom'; class Component1 extends React.Component{ static defaultProps = { name: 'Tom', age: 20 } render(){ return ( <p> <h1>姓名:{this.props.name}</h1> <h1>年龄:{this.props.age}</h1> </p> ) } } //或者 Component1.defaultProps = { name: "Sam", age: 22 } //使用 ReactDOM.render(<Component1/>, document.getElementById('p1'));
通常情况下,在定义一个组件的时候把属性定义好,会加上一些使用的条件限制,比如某些属性值的数据类型必须是数组,或者某些属性不能为空,在这个时候,可以通过 propTypes
来设置。
import React from 'react'; import ReactDOM from 'react-dom'; import PropTypes from 'prop-types' class Component1 extends React.Component{ render(){ return ( <p> <p>姓名:{this.props.name}</p> <p>年龄:{this.props.age}</p> <p>学科:</p> <ul> { this.props.subjects.map(function(_item){ return <li>{_item}</li> }) } </ul> </p> ) } } //定义属性 name 为字符串且必须有值 Component1.propTypes = { name: PropTypes.string } ReactDOM.render(<Component1 name="Tom"/>, document.getElementById('p1'));
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上が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 は、音楽リソースをいつでも聴くことができるソフトウェアです。あらゆる種類の音楽をロスレス音質で提供します。音楽プレーヤーの強化版により、より包括的で快適な音楽体験を得ることができます。その設計コンセプトは、高度なオーディオをコンピュータ上で再生可能 デバイスを携帯電話に移植し、より便利で効率的な音楽再生体験を提供 シンプルでわかりやすく、使いやすいインターフェースデザイン 過度な装飾や煩雑な操作を排除したミニマルなデザインスタイルを採用また、さまざまなスキンとテーマをサポートし、自分の好みに合わせて設定をカスタマイズし、複数のオーディオ形式の再生をサポートする専用の音楽プレーヤーを作成します。過度の音量による聴覚障害を避けるために、自分の聴覚の状態に合わせて調整してください。次は私がお手伝いさせてください

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

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

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

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 パスワードの変更や盗難デバイス保護の無効化など、特定のデータにアクセスして変更するには、情報を再度入力する必要があります。
