-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApp.jsx
More file actions
99 lines (83 loc) · 2.06 KB
/
App.jsx
File metadata and controls
99 lines (83 loc) · 2.06 KB
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import React, { useState, useEffect } from 'react';
import {v4 as uuidv4} from 'uuid';
import {
BrowserRouter as Router,
Route, Routes
} from "react-router-dom";
import axios from 'axios';
import './App.css';
import AddTask from './components/AddTask.jsx';
import Tasks from './components/Tasks.jsx';
import Header from './components/Header';
import TaskInfo from './components/TaskInfo';
const App = () => {
// let message = 'Hello'
const [tasks, setTasks] = useState([
// {
// id: '1',
// title: 'Estudar Programação',
// completed: false,
// },
// {
// id: '2',
// title: 'Ler',
// completed: true,
// },
]);
useEffect(() => {
const fetchTasks = async ()=>{
const { data } = await axios.get('https://jsonplaceholder.cypress.io/todos?_limit=10')
setTasks(data)
}
fetchTasks();
}, [])
const handleTaskClick = (taskId) => {
const newTasks = tasks.map((task) => {
if (task.id === taskId) return { ...task, completed: !task.completed}
return task;
});
setTasks(newTasks);
}
const handleTaskAddition = (taskTitle) => {
const newTasks = [
...tasks,
{
title: taskTitle,
id: uuidv4(),
completed: false,
}
];
setTasks(newTasks);
}
const handleTaskDeletion = (taskId) => {
const newTasks = tasks.filter(task => task.id !== taskId )
setTasks(newTasks)
}
return (
<Router>
<div className='container'>
<Header />
<Routes>
<Route
path='/'
exact
element={
<>
<AddTask
handleTaskAddition={handleTaskAddition}
/>
<Tasks
tasks={tasks}
handleTaskClick={handleTaskClick}
handleTaskDeletion={handleTaskDeletion}
/>
</>
}
/>
<Route path='/:taskTitle' exact element={<TaskInfo />}/>
</Routes>
</div>
</Router>
)
};
export default App