Einführung in React.js für Anfänger 2024
React.js, entwickelt von Facebook, ist eine der beliebtesten JavaScript-Bibliotheken zur Erstellung von Benutzeroberflächen (UI). Es ermöglicht Entwicklern, wiederverwendbare UI-Komponenten zu erstellen, die effizient auf Änderungen im Datenmodell reagieren. Dieser Leitfaden soll dir helfen, die Grundlagen von React.js zu verstehen und dein erstes Projekt zu erstellen.
Was ist React.js und warum solltest du es lernen?
React.js ist besonders wegen seiner Effizienz und Flexibilität beliebt. Es verwendet eine virtuelle DOM (Document Object Model), die es ermöglicht, nur die tatsächlich geänderten Teile der Webseite zu aktualisieren, anstatt die gesamte Seite neu zu rendern. Dies führt zu einer deutlich besseren Performance und einer reibungslosen Benutzererfahrung.
Darüber hinaus fördert React eine komponentenbasierte Architektur, die es einfacher macht, komplexe Benutzeroberflächen zu verwalten und wiederverwendbare Codebausteine zu erstellen.
Voraussetzungen für React.js
Bevor du mit React.js beginnst, solltest du folgende Kenntnisse mitbringen:
- Grundlegende JavaScript-Kenntnisse: Ein Verständnis der JavaScript-Grundlagen, einschließlich ES6-Funktionen wie Arrow Functions und das Konzept von
this
, ist entscheidend. - HTML und CSS: Du solltest mit den Grundlagen von HTML und CSS vertraut sein, da diese Technologien zur Strukturierung und Gestaltung von React-Komponenten verwendet werden.
Installation und Einrichtung von React
Um mit React.js zu beginnen, musst du Node.js und npm (Node Package Manager) auf deinem Computer installieren.
Node.js und npm installieren
Besuche die offizielle Node.js-Webseite und lade die neueste Version herunter. Die Installation von Node.js enthält automatisch npm.
Ein neues React-Projekt erstellen
Der einfachste Weg, ein neues React-Projekt zu starten, ist die Verwendung von create-react-app
, einem von Facebook bereitgestellten Tool, das die Projektstruktur einrichtet und die notwendigen Abhängigkeiten installiert.
Öffne dein Terminal und führe den folgenden Befehl aus:
npx create-react-app mein-erstes-react-projekt
Wechsle nach der Installation in das neue Projektverzeichnis:
cd mein-erstes-react-projekt
Starte die Entwicklungsumgebung:
npm start
Dein Browser sollte sich automatisch öffnen und die Standard-React-Seite anzeigen.
Erste Schritte mit React-Komponenten
React basiert auf Komponenten. Eine Komponente ist ein wiederverwendbarer Codebaustein, der einen Teil der Benutzeroberfläche darstellt. Komponenten können als JavaScript-Funktionen oder als Klassen definiert werden.
Erstellen einer einfachen Komponente
Lass uns eine einfache Komponente erstellen, die eine Begrüßungsnachricht anzeigt. Öffne die Datei src/App.js
und ersetze den Inhalt mit folgendem Code:
import React from 'react';
function App() {
return (
<div className="App">
<h1>Hallo, Willkommen zu deinem ersten React-Projekt!</h1>
</div>
);
}
export default App;
Speichere die Datei. Dein Browser wird die Änderung automatisch aktualisieren, und du solltest nun die Begrüßungsnachricht sehen.
Komponenten mit Props
Props (kurz für „Properties“) sind Parameter, die an Komponenten übergeben werden können, um sie dynamischer zu gestalten. Lass uns die App
-Komponente anpassen, um eine Nachricht basierend auf einem Prop anzuzeigen:
function App(props) {
return (
<div className="App">
<h1>Hallo, {props.name}!</h1>
</div>
);
}
export default App;
Jetzt kannst du den Namen als Prop an die App
-Komponente übergeben:
<App name="Max" />
Diese Änderung würde „Hallo, Max!“ anzeigen.
Zustand (State) in React
Neben Props haben Komponenten auch einen internen Zustand, der über den State verwaltet wird. Der State ermöglicht es Komponenten, sich dynamisch zu ändern und auf Benutzerinteraktionen zu reagieren.
Hier ist ein einfaches Beispiel für eine Komponente mit Zustand:
import React, { useState } from 'react';
function App() {
const [count, setCount] = useState(0);
return (
<div className="App">
<h1>Du hast {count} mal geklickt</h1>
<button onClick={() => setCount(count + 1)}>
Klick mich
</button>
</div>
);
}
export default App;
In diesem Beispiel wird die Anzahl der Klicks im State gespeichert. Jedes Mal, wenn der Button geklickt wird, erhöht sich der Zähler um 1.
Komplexeres Beispiel – To-Do-Liste mit React.js
Hier ist ein komplexeres Beispiel für eine React.js-Anwendung, die eine einfache Aufgabenverwaltung (To-Do-Liste) implementiert. In diesem Beispiel verwenden wir React-Komponenten, Zustand (State), Props und Ereignishandlung (Event Handling).
Projektstruktur:
src/App.js
– Die Hauptkomponente, die die gesamte Anwendung rendert.src/components/TodoList.js
– Eine Komponente, die die Liste der Aufgaben rendert.src/components/TodoItem.js
– Eine einzelne Aufgabe als wiederverwendbare Komponente.src/components/TodoForm.js
– Ein Formular zum Hinzufügen neuer Aufgaben.
Schritt 1: Erstelle ein neues React-Projekt
npx create-react-app todo-app
cd todo-app
Schritt 2: Erstellen der Hauptkomponente (App.js)
Beginnen wir mit der Hauptkomponente, App.js
, die als Container für die To-Do-Liste und das Formular fungiert.
import React, { useState } from 'react';
import TodoList from './components/TodoList';
import TodoForm from './components/TodoForm';
function App() {
const [todos, setTodos] = useState([]);
const addTodo = (todo) => {
setTodos([...todos, { text: todo, completed: false }]);
};
const toggleComplete = (index) => {
const newTodos = [...todos];
newTodos[index].completed = !newTodos[index].completed;
setTodos(newTodos);
};
const removeTodo = (index) => {
const newTodos = [...todos];
newTodos.splice(index, 1);
setTodos(newTodos);
};
return (
<div className="App">
<h1>Meine To-Do-Liste</h1>
<TodoForm addTodo={addTodo} />
<TodoList todos={todos} toggleComplete={toggleComplete} removeTodo={removeTodo} />
</div>
);
}
export default App;
Was passiert hier?
- Imports:
useState
: Ein React-Hook, der es uns ermöglicht, Zustand (State) in einer Funktionskomponente zu verwenden.TodoList
undTodoForm
: Zwei Komponenten, die weiter unten erklärt werden.
useState
Hook:const [todos, setTodos] = useState([]);
:- Wir initialisieren den Zustand
todos
als ein leeres Array.todos
speichert die Liste der Aufgaben. setTodos
ist die Funktion, mit der wir den Zustand aktualisieren können.
- Wir initialisieren den Zustand
- Funktionen:
addTodo
: Fügt eine neue Aufgabe zumtodos
-Array hinzu. Jedestodo
hat einentext
(die Beschreibung der Aufgabe) und eincompleted
-Flag, das angibt, ob die Aufgabe erledigt ist.toggleComplete
: Schaltet dencompleted
-Status einer Aufgabe um (also von „erledigt“ zu „unerledigt“ und umgekehrt).removeTodo
: Entfernt eine Aufgabe aus der Liste.
- JSX-Rendern:
TodoForm
undTodoList
sind die beiden Hauptkomponenten, die in dieser App gerendert werden.TodoForm
wird verwendet, um neue Aufgaben hinzuzufügen, undTodoList
, um die Aufgaben anzuzeigen und zu verwalten.
Schritt 3: Erstellen der To-Do-Liste-Komponente (TodoList.js)
Diese Komponente rendert eine Liste von TodoItem
-Komponenten.
import React from 'react';
import TodoItem from './TodoItem';
function TodoList({ todos, toggleComplete, removeTodo }) {
return (
<ul>
{todos.map((todo, index) => (
<TodoItem
key={index}
todo={todo}
index={index}
toggleComplete={toggleComplete}
removeTodo={removeTodo}
/>
))}
</ul>
);
}
export default TodoList;
Was passiert hier?
- Props:
TodoList
empfängttodos
,toggleComplete
, undremoveTodo
als Props von derApp
-Komponente.todos
ist das Array von Aufgaben, das durch diemap
-Funktion iteriert wird, um jede Aufgabe darzustellen.
- Rendern von TodoItem:
TodoItem
ist eine Komponente, die für jede Aufgabe gerendert wird.key
ist eine spezielle Prop, die React hilft, Elemente effizient zu aktualisieren.- Jede
TodoItem
-Komponente erhält die Aufgabe (todo
), den Index der Aufgabe (index
), sowie die FunktionentoggleComplete
undremoveTodo
.
Schritt 4: Erstellen der To-Do-Item-Komponente (TodoItem.js)
Diese Komponente repräsentiert eine einzelne Aufgabe. Sie ermöglicht das Markieren als erledigt und das Entfernen der Aufgabe.
import React from 'react';
function TodoItem({ todo, index, toggleComplete, removeTodo }) {
return (
<li style={{ textDecoration: todo.completed ? 'line-through' : 'none' }}>
{todo.text}
<div>
<button onClick={() => toggleComplete(index)}>
{todo.completed ? 'Undo' : 'Complete'}
</button>
<button onClick={() => removeTodo(index)}>Remove</button>
</div>
</li>
);
}
export default TodoItem;
Was passiert hier?
- Rendern einer Aufgabe:
- Jede Aufgabe wird als Listenelement (
<li>
) angezeigt. style
: Wenntodo.completed
wahr ist, wird der Text der Aufgabe durchgestrichen (textDecoration: 'line-through'
), was bedeutet, dass die Aufgabe erledigt ist.
- Jede Aufgabe wird als Listenelement (
- Buttons:
- Der
Complete/Undo
-Button schaltet dencompleted
-Status der Aufgabe um. - Der
Remove
-Button entfernt die Aufgabe aus der Liste.
- Der
Schritt 5: Erstellen der Formular-Komponente (TodoForm.js)
Diese Komponente enthält ein Eingabefeld und einen Button zum Hinzufügen neuer Aufgaben.
import React, { useState } from 'react';
function TodoForm({ addTodo }) {
const [value, setValue] = useState('');
const handleSubmit = (e) => {
e.preventDefault();
if (!value) return;
addTodo(value);
setValue('');
};
return (
<form onSubmit={handleSubmit}>
<input
type="text"
value={value}
onChange={(e) => setValue(e.target.value)}
placeholder="Neue Aufgabe hinzufügen..."
/>
<button type="submit">Hinzufügen</button>
</form>
);
}
export default TodoForm;
Was passiert hier?
- State und Input-Feld:
useState('')
: Der Zustandvalue
speichert den Text, den der Benutzer in das Eingabefeld schreibt.setValue
: Aktualisiert denvalue
-Zustand, wenn der Benutzer tippt.
- Formular-Handling:
handleSubmit
: Verhindert die Standardaktion des Formulars (die Seite neu zu laden) und fügt stattdessen die neue Aufgabe hinzu, wenn der Benutzer auf „Hinzufügen“ klickt.- Nach dem Hinzufügen wird das Eingabefeld wieder geleert (
setValue('')
).
Schritt 6: Styles hinzufügen (optional)
Füge einfache CSS-Stile hinzu, um die Anwendung besser aussehen zu lassen.
/* src/App.css */
.App {
text-align: center;
}
ul {
list-style: none;
padding: 0;
}
li {
margin: 10px 0;
display: flex;
justify-content: space-between;
align-items: center;
}
button {
margin-left: 10px;
}
Schritt 7: Anwendung testen
Nachdem du alle Komponenten erstellt hast, starte deine Anwendung:
npm start
Nach der Eingabe von npm start
in der Konsole sollte dein Browser automatisch öffnen und du solltest deine To-Do-Liste sehen. Du kannst Aufgaben hinzufügen, als erledigt markieren oder entfernen.
Zusammenfassung:
Diese Anwendung kombiniert mehrere Schlüsselkonzepte in React:
- Zustandsmanagement (
useState
): Verfolgt den aktuellen Zustand der Anwendung, z.B. die Liste der Aufgaben und den Text im Eingabefeld. - Props: Ermöglichen die Kommunikation zwischen Komponenten.
- JSX: Eine JavaScript-Erweiterung, die es ermöglicht, HTML-Strukturen direkt im JavaScript-Code zu definieren.
- Event Handling: Reaktion auf Benutzeraktionen wie das Klicken auf einen Button oder das Einreichen eines Formulars.
Fazit
Diese To-Do-Liste ist ein großartiges Beispiel dafür, wie du eine einfache, aber funktionale React.js-Anwendung erstellen kannst. Du hast dabei gelernt:
- Staatliches Management: Verwalten und Aktualisieren des Zustands in einer React-Anwendung.
- Props: Übergabe von Daten und Funktionen an Komponenten.
- Event Handling: Reaktion auf Benutzeraktionen wie Klicks.
Experimentiere weiter, indem du neue Features hinzufügst, wie zum Beispiel:
- Persistenz mit Local Storage: Speichere die Aufgaben, sodass sie nach einem Seiten-Reload noch verfügbar sind.
- Editierbare Aufgaben: Füge die Möglichkeit hinzu, bestehende Aufgaben zu bearbeiten.
Dieser Ansatz hilft dir, dein Verständnis von React.js weiter zu vertiefen und gleichzeitig eine nützliche Anwendung zu entwickeln.
Dieser Artikel sollte dir einen guten Einstieg in React.js gegeben haben. Du hast schon einiges gelernt. React bietet noch viele weitere mächtige Funktionen, wie etwa Lifecycle-Methoden, Context API und Hooks, die dir helfen, komplexere Anwendungen zu entwickeln.
Weitere Beiträge
TYPO3 Copyright mit aktueller Jahreszahl
Importieren von mehreren JSON-Arrays in eine MySQL-Datenbank mit PDO und PHP
PHP 7 | Ein einfacher Fileupload mit PHP
Eigene TYPO3 Extbase Extension und RealURL