Zum Inhalt

To-Do App Dokumentation

Übersicht

Diese To-Do-App wurde mit React Native erstellt und ermöglicht es dem Benutzer, Ziele hinzuzufügen und anzuzeigen. Die Anwendung besteht aus drei Hauptkomponenten:

  • App.js: Hauptkomponente der Anwendung, die den Zustand verwaltet und die UI-Struktur definiert.
  • GoalInput.js: Komponente für die Eingabe neuer Ziele.
  • GoalItem.js: Komponente zur Darstellung einzelner Ziele in einer Liste.

Verzeichnisstruktur

/ToDoApp
│-- /components
│   │-- GoalInput.js
│   │-- GoalItem.js
│-- App.js

Komponentenbeschreibung

1. App.js (Hauptkomponente)

Funktion: - Verwalten der Liste von Zielen im State courseGoals. - Übergibt die addGoalHandler-Funktion an GoalInput, um neue Ziele hinzuzufügen. - Zeigt die Liste der Ziele mit FlatList an.

import { useState } from "react";
import { StyleSheet, Text, View, FlatList } from "react-native";
import GoalItem from "./components/GoalItem";
import GoalInput from "./components/GoalInput";

export default function App() {
  const [courseGoals, setCourseGoals] = useState([]);

  function addGoalHandler(enteredGoalText) {
    setCourseGoals((currentCourseGoals) => [
      ...currentCourseGoals,
      { text: enteredGoalText, id: Math.random().toString() },
    ]);
  }

  return (
    <View style={styles.appContainer}>
      <GoalInput onAddGoal={addGoalHandler} />
      <View style={styles.goalsContainer}>
        <FlatList
          data={courseGoals}
          renderItem={(itemData) => {
            return <GoalItem text={itemData.item.text} id={itemData.item.id} />;
          }}
          keyExtractor={(item) => item.id}
        />
      </View>
    </View>
  );
}

2. GoalInput.js (Eingabekomponente)

Funktion: - Enthält ein TextInput-Feld für die Zieleingabe. - Enthält einen Button, um das Ziel zur Liste hinzuzufügen. - Übergibt den eingegebenen Text an die addGoalHandler-Funktion aus App.js.

import { Button, TextInput, View, StyleSheet } from "react-native";
import { useState } from "react";

export default function GoalInput(props) {
  const [enteredGoalText, setEnteredGoalText] = useState("");

  function goalInputHandler(enteredText) {
    setEnteredGoalText(enteredText);
  }

  function addGoalHandler() {
    props.onAddGoal(enteredGoalText);
    setEnteredGoalText("");
  }

  return (
    <View style={styles.inputContainer}>
      <TextInput
        placeholder="Your course goal!"
        onChangeText={goalInputHandler}
        style={styles.textInput}
        value={enteredGoalText}
      />
      <Button title="Add Goal" onPress={addGoalHandler} />
    </View>
  );
}

3. GoalItem.js (Anzeige eines Ziels)

Funktion: - Stellt ein Ziel als View mit Text dar. - Empfängt das text-Prop aus FlatList in App.js.

import { View, Text, StyleSheet } from "react-native";

export default function GoalItem(props) {
  return (
    <View style={styles.goalItem}>
      <Text style={styles.goalText}>{props.text}</Text>
    </View>
  );
}

Styling

Alle Komponenten enthalten eigene Styles, die mit StyleSheet.create() definiert werden. Die wichtigsten Stilelemente sind:

  • appContainer: Hauptcontainer der App.
  • inputContainer: Layout für das Eingabefeld und den Button.
  • goalItem: Darstellung eines einzelnen Listenelements.
const styles = StyleSheet.create({
  appContainer: {
    flex: 1,
    padding: 50,
    paddingHorizontal: 16,
    backgroundColor: "#FFFFFF",
  },
  inputContainer: {
    flexDirection: "row",
    alignItems: "center",
    marginBottom: 24,
    borderBottomWidth: 1,
    borderBottomColor: "#cccccc",
    justifyContent: "space-between",
  },
  goalItem: {
    margin: 8,
    padding: 8,
    borderRadius: 6,
    backgroundColor: "#5e0acc",
  },
  goalText: {
    color: "#fff",
  },
});

Fazit

Diese einfache To-Do-App erlaubt das Hinzufügen und Anzeigen von Zielen. Erweiterungsmöglichkeiten wären: - Hinzufügen einer Funktion zum Löschen von Zielen. - Speicherung der Ziele mit AsyncStorage. - Verbesserung des Designs mit React Native Paper oder Styled Components.