React State & Hooks
State ist der Speicher für Daten, die sich ändern können. Mit Hooks kannst du State in Function Components verwenden!
Was ist State?
import { useState } from 'react'
function Counter() {
// useState Hook
const [count, setCount] = useState(0)
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>
+1
</button>
</div>
)
}
// count = aktuelle Value
// setCount = Funktion zum Updaten
// useState(0) = InitialwertuseState Hook
import { useState } from 'react'
function App() {
// String State
const [name, setName] = useState('Anna')
// Number State
const [age, setAge] = useState(25)
// Boolean State
const [isActive, setIsActive] = useState(true)
// Array State
const [items, setItems] = useState([1, 2, 3])
// Object State
const [user, setUser] = useState({
name: 'Max',
email: 'max@example.com'
})
return <div>...</div>
}State Updaten
function Counter() {
const [count, setCount] = useState(0)
// ✅ RICHTIG - Direkt setzen
const increment = () => {
setCount(count + 1)
}
// ✅ RICHTIG - Updater Function
const incrementSafe = () => {
setCount(prevCount => prevCount + 1)
}
// ✅ Mehrfach updaten mit Updater Function
const addThree = () => {
setCount(c => c + 1)
setCount(c => c + 1)
setCount(c => c + 1)
}
return (
<div>
<p>{count}</p>
<button onClick={increment}>+1</button>
<button onClick={addThree}>+3</button>
</div>
)
}Objekte im State
function UserForm() {
const [user, setUser] = useState({
name: '',
email: '',
age: 0
})
// ✅ RICHTIG - Spread Operator
const updateName = (newName) => {
setUser({
...user,
name: newName
})
}
// ✅ RICHTIG - Input Handler
const handleChange = (e) => {
setUser({
...user,
[e.target.name]: e.target.value
})
}
return (
<form>
<input
name="name"
value={user.name}
onChange={handleChange}
/>
<input
name="email"
value={user.email}
onChange={handleChange}
/>
</form>
)
}Arrays im State
function TodoList() {
const [todos, setTodos] = useState(['Learn React', 'Build App'])
// Hinzufügen
const addTodo = (text) => {
setTodos([...todos, text])
}
// Entfernen
const removeTodo = (index) => {
setTodos(todos.filter((_, i) => i !== index))
}
// Updaten
const updateTodo = (index, newText) => {
setTodos(todos.map((todo, i) =>
i === index ? newText : todo
))
}
return (
<div>
{todos.map((todo, index) => (
<div key={index}>
<span>{todo}</span>
<button onClick={() => removeTodo(index)}>
Delete
</button>
</div>
))}
<button onClick={() => addTodo('New Todo')}>
Add
</button>
</div>
)
}Hooks Regeln
Wichtig: Hooks haben strikte Regeln!
// ✅ RICHTIG - Top Level
function Component() {
const [state, setState] = useState(0)
const [name, setName] = useState('')
return <div>...</div>
}
// ❌ FALSCH - In Conditionals
function Component() {
if (something) {
const [state, setState] = useState(0) // Error!
}
}
// ❌ FALSCH - In Loops
function Component() {
for (let i = 0; i < 10; i++) {
const [state, setState] = useState(i) // Error!
}
}
// ❌ FALSCH - In nested Functions
function Component() {
function helper() {
const [state, setState] = useState(0) // Error!
}
}Regeln:
- ✅ Nur in Function Components oder Custom Hooks
- ✅ Nur auf Top Level (nicht in Loops, Conditions, nested Functions)
- ✅ Immer in der gleichen Reihenfolge aufrufen
📝 Quiz
Wie nennt man die Funktion, die useState zurückgibt zum Updaten des State?
Zusammenfassung
Du hast gelernt:
- ✅ State = Daten die sich ändern
- ✅ useState Hook für State in Function Components
- ✅ Array Destructuring: [value, setter]
- ✅ State nie direkt mutieren
- ✅ Spread Operator für Objects/Arrays
- ✅ Hooks Regeln beachten
Key Takeaways:
- useState(initialValue) gibt [value, setter]
- Updater Functions für sicheres Updaten
- Spread Operator für Objects/Arrays
- Hooks nur auf Top Level
- State Updates sind asynchron
Gut gemacht! 🎉
Du hast "React State & Hooks - useState erklärt" abgeschlossen
Artikel bewerten
Bitte einloggen um zu bewerten
Das könnte dich auch interessieren
React Components & Props
Verstehe React Components und Props. Komponentenarchitektur, Props Drilling, Children und Component Composition.
React Event Handling - onClick, onChange & mehr
Event Handling in React. onClick, onChange, onSubmit und alle wichtigen Events mit praktischen Beispielen.
React Einführung - Was ist React?
Lerne React von Grund auf kennen. Was ist React, warum React verwenden und was macht es besonders? Der perfekte Einstieg in die React-Welt.