File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
1
+ import * as React from 'react'
2
+ import * as ReactDOM from 'react-dom'
3
+
4
+ class TodoApp extends React . Component {
5
+ constructor ( props ) {
6
+ super ( props ) ;
7
+ this . state = {
8
+ items : [
9
+ { id : 1 , text : "Learn JavaScript" , done : false } ,
10
+ { id : 2 , text : "Learn React" , done : false } ,
11
+ { id : 3 , text : "Play around in JSFiddle" , done : true } ,
12
+ { id : 4 , text : "Build something awesome" , done : true }
13
+ ]
14
+ } ;
15
+ }
16
+
17
+ render ( ) {
18
+ return (
19
+ < div >
20
+ < h2 > Todos:</ h2 >
21
+ < ol >
22
+ { this . state . items . map ( item => (
23
+ < li key = { item . id } > { /* Key prop is essential */ }
24
+ < label >
25
+ < input
26
+ type = "checkbox"
27
+ checked = { item . done }
28
+ onChange = { ( ) => this . handleCheckboxChange ( item . id ) } // Add onChange handler
29
+ />
30
+ < span className = { item . done ? "done" : "" } > { item . text } </ span >
31
+ </ label >
32
+ </ li >
33
+ ) ) }
34
+ </ ol >
35
+ </ div >
36
+ ) ;
37
+ }
38
+
39
+ handleCheckboxChange ( id ) {
40
+ this . setState ( prevState => ( {
41
+ items : prevState . items . map ( item =>
42
+ item . id === id ? { ...item , done : ! item . done } : item
43
+ )
44
+ } ) ) ;
45
+ }
46
+ }
47
+
48
+ ReactDOM . render ( < TodoApp /> , document . querySelector ( "#app" ) ) ;
You can’t perform that action at this time.
0 commit comments