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¶
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
.