File tree 3 files changed +78
-14
lines changed
3 files changed +78
-14
lines changed Original file line number Diff line number Diff line change 1
- import React from 'react'
1
+ import React from "react" ;
2
+
3
+ function TodoItem ( { task, deleteTask, toggleCompleted } ) {
4
+ function handleChange ( ) {
5
+ toggleCompleted ( task . id ) ;
6
+ }
2
7
3
- function TodoItem ( _todo ) {
4
8
return (
5
- < div > TodoItem</ div >
6
- )
9
+ < div className = "todo-item" >
10
+ < input type = "checkbox" checked = { task . completed } onChange = { handleChange } />
11
+ < p > { task . text } </ p >
12
+ < button onClick = { ( ) => deleteTask ( task . id ) } > X</ button >
13
+ </ div >
14
+ ) ;
7
15
}
8
16
9
- export default TodoItem
17
+ export default TodoItem ;
Original file line number Diff line number Diff line change 1
- import React from 'react'
1
+ import React , { useState } from 'react'
2
2
import TodoItem from './TodoItem'
3
3
4
- function TodoList ( { todos} ) {
5
- return (
6
- < div >
7
- { todos . map ( ( todo , index ) => (
8
- < TodoItem key = { index } todo = { todo } />
9
- ) ) }
10
- </ div >
11
- )
4
+ function TodoList ( ) {
5
+ const [ tasks , setTasks ] = useState ( [
6
+ {
7
+ id : 1 ,
8
+ text : 'Doctor Appointment' ,
9
+ completed : true
10
+ } ,
11
+ {
12
+ id : 2 ,
13
+ text : 'Meeting at school' ,
14
+ completed : false
15
+ }
16
+ ] )
17
+
18
+ const [ text , setText ] = useState ( '' )
19
+ function addTask ( text ) {
20
+ const newTask = {
21
+ id : Date . now ( ) ,
22
+ text,
23
+ completed : false
24
+ }
25
+ setTasks ( [ ...tasks , newTask ] )
26
+ setText ( '' )
27
+ }
28
+
29
+ function deleteTask ( id ) {
30
+ setTasks ( tasks . filter ( task => task . id !== id ) )
31
+ }
32
+
33
+ function toggleCompleted ( id ) {
34
+ setTasks ( tasks . map ( task => {
35
+ if ( task . id === id ) {
36
+ return { ...task , completed : ! task . completed }
37
+ } else {
38
+ return task
39
+ }
40
+ } ) )
41
+ }
42
+
43
+ return (
44
+ < div className = 'todo-list' >
45
+ { tasks . map ( task => (
46
+ < TodoItem
47
+ key = { task . id } task = { task } deleteTask = { deleteTask } toggleCompleted = { toggleCompleted }
48
+ />
49
+ ) ) }
50
+ < input
51
+ value = { text } onChange = { e => setText ( e . target . value ) }
52
+ />
53
+ < button onClick = { ( ) => addTask ( text ) } > Add</ button >
54
+ </ div >
55
+ )
12
56
}
13
57
14
58
export default TodoList
Original file line number Diff line number Diff line change
1
+ import React from 'react'
2
+ import TodoList from './TodoList'
3
+
4
+ function App ( ) {
5
+ return (
6
+ < div className = 'App' >
7
+ < TodoList />
8
+ </ div >
9
+ )
10
+ }
11
+
12
+ export default App ;
You can’t perform that action at this time.
0 commit comments