Anfänger202025-01-15

React State & Hooks - useState erklärt

Lerne React State mit dem useState Hook. State Management, Hooks Regeln und praktische Beispiele für interaktive Komponenten.

#react#hooks#usestate#state#interactive

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?

Counter mit 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) = Initialwert

useState Hook

useState Basics
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

State richtig 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

Object State updaten
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

Array State manipulieren
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!

Hooks 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:

  1. ✅ Nur in Function Components oder Custom Hooks
  2. ✅ Nur auf Top Level (nicht in Loops, Conditions, nested Functions)
  3. ✅ 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
ReactLektion 2 von 10
20% abgeschlossen
Lektion abgeschlossen!

Gut gemacht! 🎉

Du hast "React State & Hooks - useState erklärt" abgeschlossen

Artikel bewerten

0.0 (0 Bewertungen)

Bitte einloggen um zu bewerten