Die render()
-Methode ist ein entscheidender Bestandteil von React -Klassenkomponenten. Es ist eine erforderliche Methode, die jede Klassenkomponente implementieren muss. Die primäre Funktion der render()
-Methode besteht darin, zu beschreiben, was die Komponente auf der Grundlage ihres aktuellen Zustands und der Requisiten angezeigt wird. Wenn sich der Zustand oder die Requisiten einer Komponentenänderung ändert, ruft React die render()
-Methode auf, um festzustellen, ob die Benutzeroberfläche aktualisiert werden muss.
Hier ist ein grundlegendes Beispiel für eine Klassenkomponente mit einer render()
-Methode:
<code class="javascript">import React, { Component } from 'react'; class ExampleComponent extends Component { render() { return <div>Hello, {this.props.name}!</div>; } } export default ExampleComponent;</code>
In diesem Beispiel gibt die render()
-Methode JSX zurück, die React verwendet, um das DOM zu konstruieren und zu aktualisieren. Die render()
-Methode wird jedes Mal aufgerufen, wenn sich der Status oder die Requisiten der Komponente ändern, sodass die Komponente mit den neuen Daten erneut rendern kann.
Die render()
-Methode in React muss einen der folgenden Typen zurückgeben:
React -Elemente : Diese können über JSX oder durch Aufrufen von React.createElement()
erstellt werden. Zum Beispiel:
<code class="javascript">return <div>Hello, World!</div>;</code>
Arrays und Fragmente : Mit diesen können Sie mehrere Elemente zurückgeben. Zum Beispiel:
<code class="javascript">return [ <li key="A">First item</li>, <li key="B">Second item</li>, <li key="C">Third item</li> ];</code>
Oder mit einem Fragment:
<code class="javascript">return ( <react.fragment> <li>First item</li> <li>Second item</li> <li>Third item</li> </react.fragment> );</code>
Portale : Diese ermöglichen es, Kinder in einen anderen DOM -Subtree zu verwandeln. Zum Beispiel:
<code class="javascript">return ReactDOM.createPortal( <div>This is rendered in a different part of the DOM</div>, document.getElementById('modal-root') );</code>
Zeichenfolge und Zahlen : Diese werden als Textknoten gerendert. Zum Beispiel:
<code class="javascript">return 'Hello, World!';</code>
Booleschen oder Null : Diese führen dazu, dass nichts gerendert wird. Zum Beispiel:
<code class="javascript">return null;</code>
Es ist wichtig zu beachten, dass die render()
-Methode rein sein sollte, dh sie sollte den Komponentenzustand weder ändern noch direkt mit dem Browser interagieren. Alle Nebenwirkungen sollten durch Lebenszyklusmethoden oder Haken behandelt werden.
Funktionskomponenten in React verwenden die render()
-Methode nicht wie Klassenkomponenten. Stattdessen sind Funktionskomponenten selbst das Äquivalent der render()
-Methode in Klassenkomponenten. Sie sind reine Funktionen, die props
als Argument akzeptieren und reagieren Elemente zurückgeben, die beschreiben, was angezeigt werden soll.
Hier ist ein Beispiel für eine Funktionskomponente:
<code class="javascript">import React from 'react'; function ExampleComponent(props) { return <div>Hello, {props.name}!</div>; } export default ExampleComponent;</code>
Die wichtigsten Unterschiede sind:
this.state
State verwalten. Funktionskomponenten konnten vor der Einführung von Hooks nicht den lokalen Zustand verwalten oder Lebenszyklusmethoden anwenden. Mit Hooks (in React 16.8 eingeführt) können Funktionskomponenten Status und Lebenszyklus über useState
und useEffect
-Hooks verwalten.Hier ist ein Beispiel, das Hooks in einer Funktionskomponente verwendet:
<code class="javascript">import React, { useState, useEffect } from 'react'; function ExampleComponent() { const [count, setCount] = useState(0); useEffect(() => { document.title = `You clicked ${count} times`; }); return ( <div> <p>You clicked {count} times</p> <button onclick="{()"> setCount(count 1)}>Click me</button> </div> ); } export default ExampleComponent;</code>
Nein, Lebenszyklusmethoden sollten nicht innerhalb der render()
-Methode verwendet werden. Die render()
-Methode sollte rein und frei von Nebenwirkungen sein. Lebenszyklusmethoden wie componentDidMount
, componentDidUpdate
und componentWillUnmount
sind für Nebenwirkungen ausgelegt und sollten außerhalb der render()
-Methode verwendet werden.
Wenn Sie beispielsweise Daten abrufen möchten, wenn eine Komponente montiert, verwenden Sie componentDidMount
in einer Klassenkomponente:
<code class="javascript">import React, { Component } from 'react'; class ExampleComponent extends Component { constructor(props) { super(props); this.state = { data: null }; } componentDidMount() { // Fetch data here fetch('/api/data') .then(response => response.json()) .then(data => this.setState({ data })); } render() { return ( <div> {this.state.data ? ( <div>Data: {this.state.data}</div> ) : ( <div>Loading...</div> )} </div> ); } } export default ExampleComponent;</code>
In Funktionskomponenten würden Sie den useEffect
-Hook verwenden, um dasselbe Ergebnis zu erzielen:
<code class="javascript">import React, { useState, useEffect } from 'react'; function ExampleComponent() { const [data, setData] = useState(null); useEffect(() => { // Fetch data here fetch('/api/data') .then(response => response.json()) .then(data => setData(data)); }, []); // Empty dependency array means this effect runs once on mount return ( <div> {data ? <div>Data: {data}</div> : <div>Loading...</div>} </div> ); } export default ExampleComponent;</code>
In beiden Fällen wird die tatsächliche Datenabruflogik außerhalb der render()
-Methode gehalten, um ihre Reinheit aufrechtzuerhalten und unnötige Neuanschläge zu verhindern.
Das obige ist der detaillierte Inhalt vonWas ist die Render () -Methode in React -Klassenkomponenten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!