-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
40 lines (35 loc) · 1.28 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
import { StatusBar } from 'expo-status-bar';
import React, { useState } from 'react';
import { StyleSheet, View, FlatList, Button } from 'react-native';
import GoalItem from './components/GoalItem';
import GoalInput from './components/GoalInput';
export default function App() {
const [lifeGoals, setLifeGoals] = useState([]);
const [isAddMode, setIsAddMode] = useState(false);
const addGoalHandler = (goalTitle) => {
setLifeGoals(currentGoals => [...currentGoals, {id: Math.random().toString(), value: goalTitle}]);
setIsAddMode(false);
};
const removeGoalHandler = goalId => {
setLifeGoals(currentGoals => {
return currentGoals.filter((goal) => goal.id !== goalId);
});
};
const cancelGoalAdditionHandler = () => {
setIsAddMode(false);
};
return (
<View style={styles.screen}>
<Button title="Add New Goal" onPress={() => setIsAddMode(true)}/>
<GoalInput visible={isAddMode} onAddGoal={addGoalHandler} onCancel={cancelGoalAdditionHandler} />
<FlatList keyExtractor={(item, index) => item.id} data={lifeGoals} renderItem={itemData => (
<GoalItem id={itemData.item.id} onDelete= {removeGoalHandler} title={itemData.item.value}/>
)} />
</View>
);
};
const styles = StyleSheet.create({
screen: {
padding: 50
}
});