-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
47 lines (40 loc) · 1.27 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import React, { useState } from 'react';
import { StyleSheet, Text, View, Button, TextInput, ScrollView, FlatList } from 'react-native';
import GolItem from './components/GoalItem'
import GoalInput from './components/GoalInput'
export default function App() {
const [goals, setGoals] = useState([]);
const [isAddMode, setIsAddMode] = useState(false);
const addGoalHandler = goalTitle => {
setGoals(currentGoals => [
...currentGoals,
{id: Math.random().toString(), value: goalTitle}
]);
setIsAddMode(false);
};
const removeGoalHandler = goalkey => {
setGoals(currentGoals => {
return currentGoals.filter((goal) => goal.id !== goalkey)
});
};
const cancelGoalAddHandler = () => {
setIsAddMode(false);
};
return (
<View style={styles.screen}>
<Button title="Add New Goal" onPress={() => setIsAddMode(true)}/>
<GoalInput onCancel={cancelGoalAddHandler} visible={isAddMode} onAddGoal={addGoalHandler}/>
<FlatList
keyExtractor = {(item, index) => item.id}
data={goals}
renderItem={itemData => (
<GolItem id = {itemData.item.id} onDelete={removeGoalHandler} title = {itemData.item.value}/>
)}/>
</View>
);
}
const styles = StyleSheet.create({
screen: {
padding: 50
},
});