State dan Props dalam React Native
State dengan Array
Contoh mengelola daftar/array dalam state:
import React, { useState } from "react";
import {
View,
TextInput,
Button,
FlatList,
Text,
StyleSheet,
} from "react-native";
const TodoList = () => {
const [todos, setTodos] = useState([]);
const [inputText, setInputText] = useState("");
const addTodo = () => {
if (inputText.trim()) {
setTodos([...todos, { id: Date.now(), text: inputText }]);
setInputText("");
}
};
const deleteTodo = (id) => {
setTodos(todos.filter((todo) => todo.id !== id));
};
const clearAll = () => {
setTodos([]);
};
return (
<View style={styles.container}>
<TextInput
placeholder="Tambah todo..."
value={inputText}
onChangeText={setInputText}
style={styles.input}
/>
<View style={styles.buttonRow}>
<Button title="Tambah" onPress={addTodo} />
<Button title="Clear All" onPress={clearAll} color="red" />
</View>
<FlatList
data={todos}
keyExtractor={(item) => item.id.toString()}
renderItem={({ item }) => (
<View style={styles.todoItem}>
<Text style={styles.todoText}>{item.text}</Text>
<Button
title="Hapus"
onPress={() => deleteTodo(item.id)}
color="red"
/>
</View>
)}
/>
</View>
);
};
const styles = StyleSheet.create({
container: { padding: 20, flex: 1 },
input: { borderWidth: 1, padding: 10, marginBottom: 10, borderRadius: 5 },
buttonRow: {
flexDirection: "row",
justifyContent: "space-between",
marginBottom: 20,
},
todoItem: {
flexDirection: "row",
justifyContent: "space-between",
alignItems: "center",
padding: 10,
borderBottomWidth: 1,
borderColor: "#ccc",
},
todoText: { fontSize: 16 },
});
export default TodoList;