Im heutigen Teil der Ăbersetzung des React-Tutorials werden wir weiter an der Todo-Anwendung arbeiten und darĂŒber sprechen, wie React mit Ereignissen umgeht.

â
Teil 1: KursĂŒbersicht, GrĂŒnde fĂŒr die Beliebtheit von React, ReactDOM und JSXâ
Teil 2: Funktionskomponentenâ
Teil 3: Komponentendateien, Projektstrukturâ
Teil 4: ĂŒbergeordnete und untergeordnete Komponentenâ
Teil 5: Beginn der Arbeit an einer TODO-Anwendung, Grundlagen des Stylingsâ
Teil 6: Ăber einige Funktionen des Kurses, JSX und JavaScriptâ
Teil 7: Inline-Stileâ
Teil 8: Fortsetzung der Arbeit an der TODO-Anwendung, Vertrautheit mit den Eigenschaften von Komponentenâ
Teil 9: Komponenteneigenschaftenâ
Teil 10: Workshop zum Arbeiten mit Komponenteneigenschaften und Stylingâ
Teil 11: Dynamische Markup-Generierung und Map-Arrays-Methodeâ
Teil 12: Workshop, dritte Phase der Arbeit an einer TODO-Anwendungâ
Teil 13: Klassenbasierte Komponentenâ
Teil 14: Workshop zu klassenbasierten Komponenten, Komponentenstatusâ
Teil 15: Komponentengesundheitsworkshopsâ
Teil 16: Die vierte Phase der Arbeit an einer TODO-Anwendung, die Ereignisbehandlungâ
Teil 17: FĂŒnfte Phase der Arbeit an einer TODO-Anwendung, Ănderung des Status von Komponentenâ
Teil 18: Die sechste Phase der Arbeit an einer TODO-Anwendungâ
Teil 19: Methoden des KomponentenlebenszyklusTeil 20: Die erste Lektion in bedingtem Rendernâ
Teil 21: Zweite Lektion und Workshop zum bedingten Rendernâ
Teil 22: Die siebte Phase der Arbeit an einer TODO-Anwendung, bei der Daten aus externen Quellen heruntergeladen werdenâ
Teil 23: Erste Lektion zum Arbeiten mit Formularenâ
Teil 24: Lektion der zweiten Formâ
Teil 25: Workshop zum Arbeiten mit Formularenâ
Teil 26: Anwendungsarchitektur, Container- / Komponentenmusterâ
Teil 27: KursprojektLektion 29. Workshop. TODO-Anwendung. Etappe Nummer 4
â
Original»Job
Beim letzten Mal haben wir die Aufgabenliste fĂŒr die Anwendung aus der JSON-Datei heruntergeladen und dann durch das resultierende Array mithilfe der
map()
-Methode eine Reihe von Komponenten gebildet. Wir möchten diese Daten Àndern. Und das können wir nur, wenn wir sie in den Zustand der Komponente vorladen.
Die heutige Aufgabe besteht darin, die
App
Komponente in eine Statuskomponente zu konvertieren und die importierten Falldaten in den Status dieser Komponente zu laden.
âLösung
Rufen Sie den
App
Komponentencode auf, der bereits in unserem Projekt enthalten ist:
import React from "react" import TodoItem from "./TodoItem" import todosData from "./todosData" function App() { const todoItems = todosData.map(item => <TodoItem key={item.id} item={item}/>) return ( <div className="todo-list"> {todoItems} </div> ) } export default App
Um Daten aus der
todosData
Ă€ndern zu können, mĂŒssen wir das, was jetzt in
todosData
gespeichert
todosData
in den Status der
App
Komponente
todosData
.
Um dieses Problem zu lösen, mĂŒssen wir zuerst die Funktionskomponente der
App
in eine Komponente umwandeln, die auf der Klasse basiert. Dann mĂŒssen wir die Daten von
todosData
in den Status laden und bei der Bildung der Liste der
TodoItem
Komponenten nicht mehr das
todosData
Array umgehen, sondern das Array mit denselben Daten, die im Status gespeichert sind. So wĂŒrde es aussehen:
import React from "react" import TodoItem from "./TodoItem" import todosData from "./todosData" class App extends React.Component { constructor() { super() this.state = { todos: todosData } } render() { const todoItems = this.state.todos.map(item => <TodoItem key={item.id} item={item}/>) return ( <div className="todo-list"> {todoItems} </div> ) } } export default App
Es ist zu beachten, dass sich das Erscheinungsbild der Anwendung nach all diesen Transformationen nicht geĂ€ndert hat. Nachdem wir sie abgeschlossen haben, haben wir sie fĂŒr die weitere Bearbeitung vorbereitet.
Lektion 30. Behandeln von Ereignissen in Reaktion
â
OriginalDie Ereignisbehandlung ist das, was Webanwendungen antreibt und was sie von einfachen statischen Websites unterscheidet. Die Ereignisbehandlung in React ist recht einfach und Ă€hnelt der Verarbeitung von Ereignissen in normalem HTML. So gibt es beispielsweise in React Ereignishandler fĂŒr
onClick
und
onSubmit
, die den Àhnlichen HTML-Mechanismen Àhneln, die in Form von
onclick
und
onsubmit
, und
onsubmit
nicht nur in Bezug auf Namen (in React werden ihre Namen jedoch mithilfe eines
onsubmit
gebildet), sondern auch in wie genau sie mit ihnen arbeiten.
Hier werden Beispiele betrachtet, die mit einer Standardanwendung experimentieren, die mit
create-react-app
und deren
App
Komponentendatei den folgenden Code enthÀlt:
import React from "react" function App() { return ( <div> <img src="https://www.fillmurray.com/200/100"/> <br /> <br /> <button>Click me</button> </div> ) } export default App
So sieht unsere Anwendung in einem Browser aus.
Anwendungsseite im BrowserBevor wir ernsthaft ĂŒber das Ăndern des Status von Komponenten mithilfe der
setState()
-Methode sprechen können, mĂŒssen wir uns mit Ereignissen und der Ereignisbehandlung in React befassen. Ereignisverarbeitungsmechanismen ermöglichen es dem Benutzer der Anwendung, mit ihm zu interagieren. Eine Anwendung kann beispielsweise auf
click
oder
hover
Ereignisse reagieren und bestimmte Aktionen ausfĂŒhren, wenn diese Ereignisse auftreten.
Die Ereignisbehandlung in React ist eigentlich ziemlich einfach. Wenn Sie mit den Standard-HTML-Mechanismen vertraut sind, die zum
onclick
Ereignishandlern zu Steuerelementen verwendet werden, wie
onclick
B. dem
onclick
Ereignishandler, werden Sie sofort die Ăhnlichkeiten mit den Mechanismen erkennen, die React uns bietet.
Um beispielsweise mithilfe von HTML zu ermöglichen, dass durch Klicken auf eine bestimmte SchaltflĂ€che eine Funktion ausgefĂŒhrt wird, können Sie diese Konstruktion verwenden (vorausgesetzt, diese Funktion ist vorhanden und zugĂ€nglich):
<button onclick="myFunction()">Click me</button>
Wie bereits erwÀhnt, haben Event-Handler in React Namen, die nach Regeln im
onclick
wurden. Das heiĂt,
onclick
wird hier zu
onclick
. Gleiches gilt fĂŒr den
onMouseOver
Ereignishandler und fĂŒr andere Handler. Der Grund fĂŒr diese Ănderung liegt darin, dass ein fĂŒr JavaScript ĂŒblicher Ansatz zur Benennung von EntitĂ€ten verwendet wird.
Lassen Sie uns nun mit unserem Code arbeiten und die SchaltflĂ€che auf Klicks reagieren lassen. Anstatt den Code an den Handler zu ĂŒbergeben, um die Funktion als Zeichenfolge aufzurufen, ĂŒbergeben wir den Namen der Funktion in geschweiften Klammern. Die Beschaffung des entsprechenden Fragmentes unseres Codes sieht nun folgendermaĂen aus:
<button onClick={}>Click me</button>
Wenn Sie sich den Code der
App
Komponente ansehen, die wir in diesem Beispiel verwenden, werden Sie feststellen, dass noch keine Funktion deklariert ist, die Sie beim Klicken auf die SchaltflĂ€che aufrufen möchten. Im Allgemeinen können wir jetzt mit einer anonymen Funktion auskommen, die direkt im Code deklariert ist, der die SchaltflĂ€che beschreibt. So wĂŒrde es aussehen:
<button onClick={() => console.log("I was clicked!")}>Click me</button>
Wenn Sie nun auf die SchaltflÀche klicken, wurde der Text
I was clicked!
.
Der gleiche Effekt kann erzielt werden, indem eine unabhÀngige Funktion deklariert und der Code der Komponentendatei in die folgende Form gebracht wird:
import React from "react" function handleClick() { console.log("I was clicked") } function App() { return ( <div> <img src="https://www.fillmurray.com/200/100"/> <br /> <br /> <button onClick={handleClick}>Click me</button> </div> ) } export default App
Eine vollstĂ€ndige Liste der von React unterstĂŒtzten Ereignisse finden Sie auf
dieser Dokumentationsseite.
Versuchen Sie nun, unsere Anwendung mit einer neuen Funktion auszustatten. Stellen Sie nĂ€mlich sicher, dass beim Bewegen des Mauszeigers ĂŒber das Bild in der Konsole eine Meldung angezeigt wird. Dazu mĂŒssen Sie in der Dokumentation ein geeignetes Ereignis finden und dessen Verarbeitung organisieren.
TatsÀchlich kann dieses Problem auf verschiedene Arten gelöst werden. Wir werden seine Lösung basierend auf dem Ereignis
onMouseOver
demonstrieren. Wenn dieses Ereignis eintritt, wird eine Meldung in der Konsole angezeigt. So sieht unser Code jetzt aus:
import React from "react" function handleClick() { console.log("I was clicked") } function App() { return ( <div> <img onMouseOver={() => console.log("Hovered!")} src="https://www.fillmurray.com/200/100"/> <br /> <br /> <button onClick={handleClick}>Click me</button> </div> ) } export default App
Die Ereignisverarbeitung bietet dem Programmierer eine groĂe Chance, die sich natĂŒrlich nicht auf die Ausgabe von Nachrichten an die Konsole beschrĂ€nkt. In Zukunft werden wir darĂŒber sprechen, wie die Ereignisverarbeitung in Verbindung mit der Möglichkeit, den Status von Komponenten zu Ă€ndern, es unseren Anwendungen ermöglicht, die ihnen zugewiesenen Aufgaben zu lösen.
Wie immer empfehlen wir Ihnen, sich etwas Zeit zu nehmen, um mit dem zu experimentieren, was Sie heute gelernt haben.
Zusammenfassung
Heute haben Sie ein wenig praktische Arbeit geleistet, die den Grundstein fĂŒr wichtige Ănderungen an der Todo-Anwendung gelegt und sich mit den Ereignisbehandlungsmechanismen in React vertraut gemacht hat. Das nĂ€chste Mal wird Ihnen ein weiterer Workshop angeboten und ein neues Thema vorgestellt.
Liebe Leser! Wenn Sie sich mit der Methodik der Ereignisverarbeitung in React vertraut gemacht und mit dem Gelernten experimentiert haben, teilen Sie uns dies bitte mit.
