Skip to content

Commit 2378f82

Browse files
committed
Refactor to use prevState
1 parent 7fbce94 commit 2378f82

File tree

1 file changed

+32
-10
lines changed

1 file changed

+32
-10
lines changed

src/App.js

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,28 +29,50 @@ class App extends Component {
2929
}
3030
this.addForm.reset()
3131
}
32+
handleSubmit = event => {
33+
event.preventDefault()
34+
const newItem = this.newItem.value
35+
if (newItem) {
36+
this.setState(prevState => {
37+
return {items: [...prevState.items, newItem]}
38+
})
39+
} else {
40+
return
41+
}
42+
this.addForm.reset()
43+
}
3244
removeItem = x => {
33-
const newItems = this.state.items.filter(item => item !== x)
34-
this.setState({
35-
items: [...newItems],
45+
this.setState(({items}) => {
46+
return {
47+
items: [...items.filter(item => item !== x)],
48+
}
3649
})
3750
}
3851
selectItem = () => {
3952
this.setState(
40-
{
41-
selectedItem: randomItem(this.state.items),
42-
confetti: true,
53+
prevState => {
54+
let nextItem
55+
do {
56+
nextItem = randomItem(prevState.items)
57+
} while (nextItem === prevState.selectItem)
58+
return {
59+
selectedItem: nextItem,
60+
confetti: true,
61+
}
4362
},
44-
() =>
63+
() => {
4564
this.setState({
4665
confetti: false,
47-
}),
66+
})
67+
},
4868
)
4969
}
5070
toggleSidebar = e => {
5171
e.preventDefault()
52-
this.setState({
53-
sidebarVisible: !this.state.sidebarVisible,
72+
this.setState(prevState => {
73+
return {
74+
sidebarVisible: !prevState.sidebarVisible,
75+
}
5476
})
5577
}
5678
render() {

0 commit comments

Comments
 (0)