React 入門: React でコンポーネントを作成する方法
コンポーネントを作成する
コンポーネントを作成する前に、次の点に注意してください:
コンポーネント名の最初の文字は大文字にする必要があります
コンポーネントで返されるJSXはルートのみにすることができますノードであり、すべてのコンテンツは 1 つの要素を使用する必要があります
1. ステートレス機能コンポーネント
ステートレス機能コンポーネントは、コードがより読みやすく、合理化され、便利になり、冗長性が軽減されることを理解できます。ステートレス コンポーネントには次の特性があります:
コンポーネントはインスタンス化できず、全体的なレンダリングが向上します
インスタンス化されていないため、コンポーネントはこのオブジェクトにアクセスできません
コンポーネントにはライフサイクルがありません
- ステートレスコンポーネントは入力プロパティにのみアクセスでき、状態はありません
import React from 'react' import { connect } from 'dva'; function CreateComponent(props) { console.log(props); return ( <p> <span>{props.name}今年{props.age}岁</span> </p> ) } export default connect(state => ({ name:'小明', age:15 }))(CreateComponent);
import React from 'react' class CreateComponent extends React.Component { render() { return( <p> <h2>标题</h2> <ul> <li>首先</li> <li>其次</li> <li>最后</li> </ul> </p> ) } } export default CreateComponent;
import React from 'react'
class CreateComponent extends React.Component {
clickFunc = (e) => {
console.log("监听:",e.target.innerHTML);
}
clickValue = (value) => {
console.log(value);
}
render() {
return (
<p>
<a onClick={this.clickFunc}>监听事件</a>
<br/>
<a onClick={this.clickValue.bind(this,123)}>this对象</a>
</p>
)
}
}
export default CreateComponent;
ログイン後にコピー
上記はイベント監視とパラメータの受け渡しの例です通常、コンポーネントでは状態を内部の状態に置くために使用されます。コンポーネントのパラメータ、および setState は状態のパラメータを変更するために使用されます。例: 3. コンポーネントの props props は、コンポーネント内の独自の props を変更することはできません。たとえば、次のようにコンポーネントを作成し、このコンポーネントを別のコンポーネントで呼び出します: import React from 'react' class CreateComponent extends React.Component { clickFunc = (e) => { console.log("监听:",e.target.innerHTML); } clickValue = (value) => { console.log(value); } render() { return ( <p> <a onClick={this.clickFunc}>监听事件</a> <br/> <a onClick={this.clickValue.bind(this,123)}>this对象</a> </p> ) } } export default CreateComponent;
import React from 'react'
class CreateComponent extends React.Component {
state = {
flag : true
}
clickValue = () => {
this.setState({
flag: !this.state.flag
})
}
render() {
return (
<p>
<span>flag的值为:{this.state.flag ? '真' : '假'}</span>
<br/>
<button onClick={this.clickValue}>改变flag值</button>
</p>
)
}
}
export default CreateComponent;
ログイン後にコピー
コンポーネント NewComponent を作成し、次のように呼び出します:
import React from 'react' class CreateComponent extends React.Component { state = { flag : true } clickValue = () => { this.setState({ flag: !this.state.flag }) } render() { return ( <p> <span>flag的值为:{this.state.flag ? '真' : '假'}</span> <br/> <button onClick={this.clickValue}>改变flag值</button> </p> ) } } export default CreateComponent;
import React from 'react'; function NewComponent(props) { return ( <p> {props.content} </p> ); } export default NewComponent;
コンストラクターコンポーネントの初期化:
コンストラクターいくつかのパラメーターのプロパティなどを初期化します。componentWillMount コンポーネントのレンダリング前:
componentWillMount この関数は、react16.3.0 以降、徐々に非推奨になりました。コンポーネントの後に実行されますレンダリングとデータのロードが可能レンダーコンポーネントのレンダリング:
レンダーコンポーネントのレンダリング 表示ページ
import React from 'react'
import NewComponent from './newComponent.js'
class CreateComponent extends React.Component {
render() {
return (
<p>
<NewComponent content={'我是内容'} />
</p>
)
}
}
export default CreateComponent;
ログイン後にコピー
出力結果: import React from 'react'
class CreateComponent extends React.Component {
constructor () {
super()
console.log('construct:页面初始化')
}
componentWillMount () {
console.log('componentWillMount:页面将要渲染')
}
componentDidMount () {
console.log('componentDidMount:页面渲染结束')
}
render() {
console.log('render:页面渲染');
return (
<p>
页面渲染
</p>
)
}
}
export default CreateComponent;
ログイン後にコピー
import React from 'react' import NewComponent from './newComponent.js' class CreateComponent extends React.Component { render() { return ( <p> <NewComponent content={'我是内容'} /> </p> ) } } export default CreateComponent;
import React from 'react' class CreateComponent extends React.Component { constructor () { super() console.log('construct:页面初始化') } componentWillMount () { console.log('componentWillMount:页面将要渲染') } componentDidMount () { console.log('componentDidMount:页面渲染结束') } render() { console.log('render:页面渲染'); return ( <p> 页面渲染 </p> ) } } export default CreateComponent;
componentWillUnmountコンポーネントの削除
componentWillUnmount関数はコンポーネントの削除前に実行される関数です次のコード: construct:页面初始化
componentWillMount:页面将要渲染
render:页面渲染
componentDidMount:页面渲染结束
ログイン後にコピー
コンポーネント NewComponent を作成し、このコンポーネントを CreateComponent コンポーネントに導入します:
construct:页面初始化 componentWillMount:页面将要渲染 render:页面渲染 componentDidMount:页面渲染结束
import React from 'react'; class NewComponent extends React.Component { componentWillUnmount() { console.log('componentWillUnmount:将要从页面中删除'); } render() { return ( <p> {this.props.content} </p> ); } } export default NewComponent;
import React from 'react'
import NewComponent from "./newComponent.js";
class CreateComponent extends React.Component {
constructor () {
super()
console.log('construct:页面初始化');
this.state = {
content:'测试组件',
isDelete:false
}
}
componentWillMount () {
console.log('componentWillMount:页面将要渲染')
}
componentDidMount () {
console.log('componentDidMount:页面渲染结束')
}
deleteFunc = () => {
this.setState({
isDelete:true
})
}
render() {
console.log('render:页面渲染');
return (
<p>
页面渲染
<input type="button" value='删除' onClick={this.deleteFunc}/>
{!this.state.isDelete?(
<NewComponent content={this.state.content}/>
):(null)}
</p>
)
}
}
export default CreateComponent;
ログイン後にコピー
上記のライフサイクルは、一般的に使用されるコンポーネントのライフサイクルです。ライフサイクルには更新フェーズのライフサイクルもありますが、これらは比較的まれに使用されます。
import React from 'react' import NewComponent from "./newComponent.js"; class CreateComponent extends React.Component { constructor () { super() console.log('construct:页面初始化'); this.state = { content:'测试组件', isDelete:false } } componentWillMount () { console.log('componentWillMount:页面将要渲染') } componentDidMount () { console.log('componentDidMount:页面渲染结束') } deleteFunc = () => { this.setState({ isDelete:true }) } render() { console.log('render:页面渲染'); return ( <p> 页面渲染 <input type="button" value='删除' onClick={this.deleteFunc}/> {!this.state.isDelete?( <NewComponent content={this.state.content}/> ):(null)} </p> ) } } export default CreateComponent;
shouldComponentUpdate(nextProps, nextState)
以下に示すように、コンポーネントを再レンダリングするかどうかを制御しますconstruct:页面初始化 componentWillMount:页面将要渲染 render:页面渲染 componentDidMount:页面渲染结束 componentWillUnmount:将要从页面中删除
componentWillReceiveProps(nextProps)
このコンポーネントは、親コンポーネントから新しいプロパティを受け取る前に呼び出されます。関数のパラメータ nextProps は、
NewComponent コンポーネント内:import React from 'react' import NewComponent from "./newComponent.js"; class CreateComponent extends React.Component { constructor () { super() console.log('construct:页面初始化'); this.state = { content:'测试组件', isDelete:false } } componentWillMount () { console.log('componentWillMount:页面将要渲染') } componentDidMount () { console.log('componentDidMount:页面渲染结束') } shouldComponentUpdate(nextProps, nextState){ if(nextState.isDelete){ return false; } } deleteFunc = () => { this.setState({ isDelete:true }) } render() { console.log('render:页面渲染'); return ( <p> 页面渲染 <input type="button" value='删除' onClick={this.deleteFunc}/> {!this.state.isDelete?( <NewComponent content={this.state.content}/> ):(null)} </p> ) } } export default CreateComponent;
import React from 'react'; class NewComponent extends React.Component { componentWillUnmount() { console.log('componentWillUnmount:将要从页面中删除'); } componentWillReceiveProps(nextProps){ console.log(nextProps); } render() { return ( <p> {this.props.content} </p> ); } } export default NewComponent;
componentWillUpdate:
このメソッドは、コンポーネントが再実行される前に呼び出されます。レンダリングされ、react16.3.0 で使用されます 開始後に非推奨になりますcomponentDidUpdate:
コンポーネントは再レンダリングされ、変更が実際の DOM に変更されます。後で呼び出してください注:
componentWillUpdate、componentWillReceiveProps、componentWillMount 3 つのライフ サイクルは、react116.3.0 以降非推奨になります 関連する推奨事項:React コンポーネントのライフサイクル インスタンス分析
React コンポーネント Dragact 0.1.4 の詳細な説明
以上がReact 入門: 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)

ホットトピック









WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが
