suchen
HeimWeb-FrontendFront-End-Fragen und AntwortenWas sind die Lebenszyklusfunktionen von React?

Die Lebenszyklusfunktionen von „react“ sind: 1. „componentWillMount“-Funktion; 3. „componentWillUpdate“-Funktion; 6. „componentWillReceiveProps“-Funktion;

Was sind die Lebenszyklusfunktionen von React?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, Reaktionsversion 18.0.0, Dell G3-Computer.

Was sind die Lebenszyklusfunktionen von React?

Reacts Lebenszyklusfunktion (sehr detailliert)

Kommen wir ohne weitere Umschweife direkt zur Sache!

Werfen wir zunächst einen Blick auf die Lebenszyklusfunktionen von React:

  • Die Funktion, die ausgelöst wird, wenn die Komponente montiert werden soll: ComponentWillMount

  • Die Funktion, die ausgelöst wird, wenn die Komponente Die Bereitstellung ist abgeschlossen: ComponentDidMount

  • Die Funktion, die ausgelöst wird, wenn die Daten aktualisiert werden: ShouldComponentUpdate

  • Die Funktion, die ausgelöst wird, wenn die Daten aktualisiert werden sollen: ComponentWillUpdate

  • Die Funktion, die ausgelöst wird, wenn die Datenaktualisierung abgeschlossen ist: ComponentDidUpdate in der übergeordneten Komponente geändert: ComponentWillReceiveProps

  • Lassen Sie uns den Code im Detail erklären

    1. Montageteil
  • Nach Angaben des Beamten Aus dem Lebenszyklusdiagramm können wir erkennen, dass das Laden und Rendern einer Komponente mit beginnt defaultProps und propsTypes (was diese beiden sind, wird im nächsten Artikel separat besprochen und steht hier nicht im Mittelpunkt)

    Dann gibt es constructor und die Initialen in this.state Data , also hier ist der erste Schritt. Anschließend wird mit der Montage der

    componentWillMount-Komponente begonnen. Dies ist der zweite Schritt. Dann wird die Komponente gemountet, das Rendern wird analysiert und gerendert, sodass der dritte Schritt bald erfolgt, d.

Unterkomponentencode, führen Sie einfach das Rendern in die übergeordnete Komponente ein (ich werde hier nicht auf den Code eingehen)

import React ,{Component} from 'react'

class Smzq extends Component{
	constructor(props){
		console.log('01构造函数')		
		super(props)
		this.state={
			
		}
	}
	//组件将要挂载时候触发的生命周期函数
	componentWillMount(){
		console.log('02组件将要挂载')
	}
	//组件挂载完成时候触发的生命周期函数
	componentDidMount(){
		console.log('04组件将要挂载')
	}
	render(){
		console.log('03数据渲染render')
		return(
			<div>
				生命周期函数演示
			</div>
		) 
	}
}
export default Smzq

Öffnen Sie die Konsole zum Anzeigen

2. Datenaktualisierungsteil Wenn die Daten aktualisiert werden , der erste Schritt besteht darin, mit shouldComponentUpdate zu bestätigen, ob die Daten aktualisiert werden sollen , sie werden aktualisiert, wenn diese Funktion true zurückgibt, und diese Funktion kann zwei Parameter
nextProps
und

nextState

deklarieren,

nextProps ist der Wert Von der übergeordneten Komponente an die untergeordnete Komponente übergeben, ist nextState der Wert nach der Datenaktualisierung. Diese beiden Werte können in dieser Funktion abgerufen werden.
Im zweiten Schritt aktualisiert Was sind die Lebenszyklusfunktionen von React?componentWillUpdate die Daten

. Der dritte Schritt ist immer noch

render. Wenn sich die Daten ändern, wird das Rendern erneut durchgeführt. Der vierte Schritt besteht darin, die componentDidUpdate-Datenaktualisierung
abzuschließen. In Bezug auf den Code definiert die Unterkomponente basierend auf dem vorherigen Teil anfängliche Daten in this.state, bindet diese Daten in Render und fügt dann eine Schaltfläche hinzu, um ein onClick-Ereignis zu deklarieren, um diese Daten zu ändern. Auf diese Weise können Sie die Auswirkung des Datenaktualisierungsteils sehen. Ich habe den ersten Teil des Codes hier gelöscht, damit er weniger chaotisch aussieht.

import React ,{Component} from 'react'

class Smzq extends Component{
	constructor(props){
		super(props)
		this.state={
			msg:'我是一个msg数据'
		}
	}
	//是否要更新数据,如果返回true才会更新数据
	shouldComponentUpdate(nextProps,nextState){
		console.log('01是否要更新数据')
		console.log(nextProps)		//父组件传给子组件的值,这里没有会显示空
		console.log(nextState)		//数据更新后的值
		return true;				//返回true,确认更新
	}
	//将要更新数据的时候触发的
	componentWillUpdate(){
		console.log('02组件将要更新')
	}
	//更新数据时候触发的生命周期函数
	componentDidUpdate(){
		console.log('04组件更新完成')
	}
	//更新数据
	setMsg(){
		this.setState({
			msg:'我是改变后的msg数据'
		})
	}
	render(){
		console.log('03数据渲染render')
		return(
			<div>
				{this.state.msg}
				<br>
				<hr>
				<button>this.setMsg()}>更新msg的数据</button>
			</div>
		) 
	}
}
export default Smzq
3. Lassen Sie uns separat über die Funktion „componentWillReceiveProps“ sprechen, die ausgelöst wird, wenn der Wert von „props“ in der übergeordneten Komponente geändert wird Untergeordnete Komponente. Funktion, ich habe gerade im zweiten Teil erwähnt, dass die Funktion ShouldComponentUpdate zwei Parameter tragen kann. nextProps ist der Wert, der von der übergeordneten Komponente an die untergeordnete Komponente übergeben wird. Definieren Sie anfängliche Titeldaten in der übergeordneten Komponente und schreiben Sie eine zu deklarierende Schaltfläche ein onClick-Ereignis. Ändern Sie diesen Titel.
IV. Die Funktion, wenn die Komponente „componentWillUnmount“ kurz vor der Zerstörung steht. Definieren Sie einen Statuswert mit dem Flag „true“ in der übergeordneten Komponente. Fügen Sie eine Schaltfläche hinzu, um ein onClick-Ereignis zu deklarieren. Ändern Sie dieses Flag in das Bauteil zerstören. Code der übergeordneten Komponente:

import React, { Component } from 'react';
import Smzq from './components/Smzq'

class App extends Component {
	constructor(props){
		super(props)
		this.state={
			flag:true,
			title:"我是app组件的标题"
		}
	}
	//创建/销毁组件
	setFlag(){
		this.setState({
			flag:!this.state.flag
		})
	}
	//改变title
	setTitle(){
		this.setState({
			title:'我是app组件改变后的title'
		})
	}
  	render() {
	    return (
	      <div>
				{
					this.state.flag?<smzq></smzq>:''
				}
				<button>this.setFlag()}>挂载/销毁生命周期函数组件</button>
				<button>this.setTitle()}>改变app组件的title</button>
	      </div>
	    );
 	}
}
export default App;
Vollständiger Code der untergeordneten Komponente:

import React ,{Component} from 'react'

class Smzq extends Component{
	constructor(props){
		super(props)
		this.state={
			msg:'我是一个msg数据'
		}
	}
	//组件将要挂载时候触发的生命周期函数
	componentWillMount(){
		console.log('02组件将要挂载')
	}
	//组件挂载完成时候触发的生命周期函数
	componentDidMount(){
		//Dom操作,请求数据放在这个里面
		console.log('04组件挂载完成')
	}
	//是否要更新数据,如果返回true才会更新数据
	shouldComponentUpdate(nextProps,nextState){
		console.log('01是否要更新数据')
		console.log(nextProps)		//父组件传给子组件的值,这里没有会显示空
		console.log(nextState)		//数据更新后的值
		return true;				//返回true,确认更新
	}
	//将要更新数据的时候触发的
	componentWillUpdate(){
		console.log('02组件将要更新')
	}
	//更新数据时候触发的生命周期函数
	componentDidUpdate(){
		console.log('04组件更新完成')
	}
	//你在父组件里面改变props传值的时候触发的函数
	componentWillReceiveProps(){
		console.log('父子组件传值,父组件里面改变了props的值触发的方法')
	}
	setMsg(){
		this.setState({
			msg:'我是改变后的msg数据'
		})
	}
	//组件将要销毁的时候触发的生命周期函数,用在组件销毁的时候执行操作
	componentWillUnmount(){
		console.log('组件销毁了')
	}
	render(){
		console.log('03数据渲染render')
		return(
			<div>
				生命周期函数演示--{this.state.msg}--{this.props.title}
				<br>
				<hr>
				<button>this.setMsg()}>更新msg的数据</button>
			</div>
		) 
	}
}
export default Smzq

点击挂载/销毁生命周期函数组件这个按钮的时候
子组件消失,控制台打印:组件销毁了。

当父组件给子组件传值时
Was sind die Lebenszyklusfunktionen von React?

这里nextProps这个就有上图划红线的值了。
那么我们再点击改变app组件的title这个按钮

Was sind die Lebenszyklusfunktionen von React?

这里可以看到componentWillReceiveProps这个函数被触发了,nextProps这个值也发生了改变。

到这里就全部结束了,可能写的不够清晰,不知道有没有人能看完,over。

推荐学习:《react视频教程

Das obige ist der detaillierte Inhalt vonWas sind die Lebenszyklusfunktionen von React?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
react中canvas的用法是什么react中canvas的用法是什么Apr 27, 2022 pm 03:12 PM

在react中,canvas用于绘制各种图表、动画等;可以利用“react-konva”插件使用canvas,该插件是一个canvas第三方库,用于使用React操作canvas绘制复杂的画布图形,并提供了元素的事件机制和拖放操作的支持。

React是双向数据流吗React是双向数据流吗Apr 21, 2022 am 11:18 AM

React不是双向数据流,而是单向数据流。单向数据流是指数据在某个节点被改动后,只会影响一个方向上的其他节点;React中的表现就是数据主要通过props从父节点传递到子节点,若父级的某个props改变了,React会重渲染所有子节点。

react中antd和dva是什么意思react中antd和dva是什么意思Apr 21, 2022 pm 03:25 PM

在react中,antd是基于Ant Design的React UI组件库,主要用于研发企业级中后台产品;dva是一个基于redux和“redux-saga”的数据流方案,内置了“react-router”和fetch,可理解为应用框架。

react中为什么使用nodereact中为什么使用nodeApr 21, 2022 am 10:34 AM

因为在react中需要利用到webpack,而webpack依赖nodejs;webpack是一个模块打包机,在执行打包压缩的时候是依赖nodejs的,没有nodejs就不能使用webpack,所以react需要使用nodejs。

react是组件化开发吗react是组件化开发吗Apr 22, 2022 am 10:44 AM

react是组件化开发;组件化是React的核心思想,可以开发出一个个独立可复用的小组件来构造应用,任何的应用都会被抽象成一颗组件树,组件化开发也就是将一个页面拆分成一个个小的功能模块,每个功能完成自己这部分独立功能。

react和reactdom有什么区别react和reactdom有什么区别Apr 27, 2022 am 10:26 AM

react和reactdom的区别是:ReactDom只做和浏览器或DOM相关的操作,例如“ReactDOM.findDOMNode()”操作;而react负责除浏览器和DOM以外的相关操作,ReactDom是React的一部分。

react中forceupdate的用法是什么react中forceupdate的用法是什么Apr 19, 2022 pm 12:03 PM

在react中,forceupdate()用于强制使组件跳过shouldComponentUpdate(),直接调用render(),可以触发组件的正常生命周期方法,语法为“component.forceUpdate(callback)”。

react有没有双向绑定react有没有双向绑定Apr 21, 2022 am 10:24 AM

react中没有双向绑定;react的设计思想就是单向数据流,没有双向绑定的概念;react是view层,单项数据流只能由父组件通过props将数据传递给子组件,满足了view层渲染的要求并且更易测试与控制,所以在react中没有双向绑定。

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software