Komponenten sind die grundlegenden Bausteine einer Reaktionsanwendung. Sie sind wiederverwendbare Codestücke, die einen Teil der Benutzeroberfläche darstellen. Jede Komponente kann als ein in sich geschlossenes Modul angesehen werden, das ihren eigenen Zustand verwaltet und seine eigene Benutzeroberfläche macht. Komponenten in React können entweder funktional oder klassenbasiert sein, obwohl mit dem Aufkommen von Hooks funktionelle Komponenten aufgrund ihrer Einfachheit und Lesbarkeit häufiger verwendet werden.
Komponenten können Daten über Props empfangen, nämlich Eingänge für eine Komponente, die sich auf die Rendere auswirken können. Sie können auch ihren eigenen internen Zustand beibehalten, sodass sie auf Benutzerinteraktionen reagieren und die Benutzeroberfläche entsprechend aktualisieren können. React -Komponenten können zusammen komponiert werden, um eine komplexe und interaktive Benutzeroberfläche zu erstellen, wodurch sie zu einem leistungsstarken Tool zum Aufbau moderner Webanwendungen sind.
Funktionelle und Klassenkomponenten in React dienen dem gleichen Zweck der Einkapselung und Rendern von UI -Elementen, unterscheiden sich jedoch in Syntax und Funktionen, insbesondere in früheren Versionen von React.
Funktionale Komponenten:
Beispiel für eine einfache funktionale Komponente:
<code class="jsx">function Welcome(props) { return <h1>Hello, {props.name}</h1>; }</code>
Klassenkomponenten:
React.Component
erstrecken.componentDidMount
, componentDidUpdate
und componentWillUnmount
verwenden.Beispiel einer einfachen Klassenkomponente:
<code class="jsx">class Welcome extends React.Component { render() { return <h1>Hello, {this.props.name}</h1>; } }</code>
In der modernen React -Entwicklung werden funktionelle Komponenten mit Haken aufgrund ihrer Einfachheit und der Fähigkeit, die staatliche Logik zwischen den Komponenten leicht wiederzuverwenden.
Das Übergeben von Daten zwischen den Komponenten in React kann je nach Beziehung zwischen den Komponenten (übergeordnetes Kind, Kinder Eltern oder Geschwisterkomponenten) auf verschiedene Weise erreicht werden.
1. Eltern der Kindheit: Requisiten
Die häufigste Methode, um Daten von einem Elternteil an eine untergeordnete Komponente zu übergeben, ist die Verwendung von Requisiten. Requisiten sind schreibgeschützte Daten, die von einer übergeordneten Komponente an seine untergeordneten Komponenten übergeben werden.
Beispiel:
<code class="jsx">function Parent() { const name = 'John'; return <child name="{name}"></child>; } function Child(props) { return <p>Hello, {props.name}!</p>; }</code>
2. Kind zu Eltern: Rückrufe
Um Daten von einem Kind an eine übergeordnete Komponente zu übergeben, können Sie eine Rückruffunktion als Prop an die untergeordnete Komponente übergeben. Die untergeordnete Komponente kann diese Funktion dann aufrufen und alle erforderlichen Daten an den übergeordneten übergeben.
Beispiel:
<code class="jsx">function Parent() { const handleNameChange = (newName) => { console.log(newName); }; return <child onnamechange="{handleNameChange}"></child>; } function Child(props) { const name = 'Jane'; return <button onclick="{()"> props.onNameChange(name)}>Send Name</button>; }</code>
3. zwischen Geschwistern: Hebenszustand hoch
Wenn Sie Daten zwischen Geschwisterkomponenten weitergeben müssen, können Sie den Zustand bis zu ihrer nächsten gemeinsamen übergeordneten Komponente anheben. Die übergeordnete Komponente kann dann den Status verwalten und als Requisiten an die untergeordneten Komponenten weitergeben.
Beispiel:
<code class="jsx">function Parent() { const [name, setName] = useState(''); const handleNameChange = (newName) => { setName(newName); }; return ( <div> <child1 name="{name}" onnamechange="{handleNameChange}"></child1> <child2 name="{name}"></child2> </div> ); } function Child1(props) { const name = 'John'; return <button onclick="{()"> props.onNameChange(name)}>Send Name</button>; } function Child2(props) { return <p>Hello, {props.name}!</p>; }</code>
Das effektive Verwalten des Zustands ist entscheidend für den Aufbau robuster und effizienter React -Anwendungen. Hier sind einige Best Practices für das staatliche Management in React -Komponenten:
1. Verwenden Sie den useState
-Haken für den örtlichen Staat:
Verwenden Sie für funktionale Komponenten den useState
-Hook, um den lokalen Zustand zu verwalten. Dieser Ansatz hält Ihre Komponenten einfach und konzentriert sich auf ihre UI -Logik.
Beispiel:
<code class="jsx">function Counter() { const [count, setCount] = useState(0); return ( <div> <p>You clicked {count} times</p> <button onclick="{()"> setCount(count 1)}>Click me</button> </div> ); }</code>
2. Heben Sie den Zustand bei Bedarf an:
Wenn mehrere Komponenten denselben Zustand teilen müssen, heben Sie den Staat auf den nächsten gemeinsamen Elternteil. Dies hilft, Prop -Bohrungen zu vermeiden, und hält Ihre Komponentenhierarchie sauberer.
3.. Verwenden Sie die Kontext -API für den globalen Zustand:
Für den Zustand, auf den in Ihrer gesamten Anwendung von vielen Komponenten zugegriffen werden muss, sollten Sie die Kontext -API verwenden. Es bietet eine Möglichkeit, Daten über den Komponentenbaum zu gelangen, ohne Requisiten auf jeder Ebene manuell abzugeben.
Beispiel:
<code class="jsx">const ThemeContext = React.createContext('light'); function App() { return ( <themecontext.provider value="dark"> <toolbar></toolbar> </themecontext.provider> ); } function Toolbar() { return ( <div> <themedbutton></themedbutton> </div> ); } function ThemedButton() { const theme = useContext(ThemeContext); return <button style="{{" background: theme="==" :>I am styled by theme context!</button>; }</code>
4. Verwenden Sie Redux- oder andere staatliche Verwaltungsbibliotheken für komplexe Anwendungen:
Für größere Anwendungen mit komplexen Zustandsmanagementanforderungen sollten Sie eine Bibliothek wie Redux verwenden. Redux bietet einen zentralen Geschäft für den Zustand Ihrer Anwendung und eine Reihe vorhersehbarer Regeln für die Aktualisierung dieses Staates.
5. Halten Sie die Staatsaktualisierungen unveränderlich:
Geben Sie beim Aktualisieren des Zustands immer ein neues Zustandsobjekt zurück, anstatt die vorhandenen zu mutieren. Dies hilft dabei, die Komponenten effizient neu zu reagieren und die Leistung zu verbessern.
Beispiel:
<code class="jsx">// Incorrect: Mutating state const [user, setUser] = useState({ name: 'John', age: 30 }); user.age = 31; // Don't do this! // Correct: Returning a new state object setUser(prevUser => ({ ...prevUser, age: 31 }));</code>
6. Verwenden Sie eine Memoisierung, um die Leistung zu optimieren:
Verwenden Sie useMemo
und useCallback
Hooks, um teure Berechnungen und Rückruffunktionen zu meimen, wodurch unnötige Neuanschläge von Komponenten verhindern.
Beispiel:
<code class="jsx">const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); const memoizedCallback = useCallback(() => doSomething(a, b), [a, b]);</code>
Durch die Befolgung dieser Best Practices können Sie den Zustand in Ihren React -Komponenten effektiv verwalten, was zu einer wartbaren und leistungsfähigeren Anwendung führt.
Das obige ist der detaillierte Inhalt vonWas sind Komponenten in React?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!