Skip to content

Commit aa71997

Browse files
authored
Create TodoApp.jsx
```jsx import * as React from 'react' import * as ReactDOM from 'react-dom' class TodoApp extends React.Component { constructor(props) { super(props); this.state = { items: [ { id: 1, text: "Learn JavaScript", done: false }, { id: 2, text: "Learn React", done: false }, { id: 3, text: "Play around in JSFiddle", done: true }, { id: 4, text: "Build something awesome", done: true } ] }; } render() { return ( <div> <h2>Todos:</h2> <ol> {this.state.items.map(item => ( <li key={item.id}> {/* Key prop is essential */} <label> <input type="checkbox" checked={item.done} onChange={() => this.handleCheckboxChange(item.id)} // Add onChange handler /> <span className={item.done ? "done" : ""}>{item.text}</span> </label> </li> ))} </ol> </div> ); } handleCheckboxChange(id) { this.setState(prevState => ({ items: prevState.items.map(item => item.id === id ? { ...item, done: !item.done } : item ) })); } } ReactDOM.render(<TodoApp />, document.querySelector("#app")); ```
1 parent 57fd6a8 commit aa71997

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
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"));

0 commit comments

Comments
 (0)