export default class App extends Component { ~
🔽
export default function App() { ~
render() {
return ( ...내용 )
}
🔽
return ( ...내용 )
react에서 useState를 가져와서 사용한다.
const [todoData, setTododata] = useState([])
useState의 인수
state = {
todoData: [
{
id: "1",
title: "공부하기",
completed: true
},
...
]
}
🔽
import { useState } from "react";
const [todoData, setTododata] = useState([])
const [value, setValue] = useState("")
this.state.todoData ===> todoData
this.state.value ===> value
handleClick = (id) => {
let newTodoData = this.state.todoData.filter((data) => data.id !== id)
this.setState({ todoData: newTodoData })
}
value={this.state.value}
🔽
const handleClick = (id) => {
let newTodoData = todoData.filter((data) => data.id !== id)
setTododata(newTodoData)
}
value={value}
this.setState({value: ""}) ===> setValue("")
this.setState({ todoData: newTodoData })
this.setState({ value: e.target.value })
🔽
setTododata(newTodoData)
setValue(e.target.value)
this.setState({ todoData: [...this.state.todoData, newTodo], value: "" })
//전개연산자로 이미 들어있는 state이용
🔽
setTodoData(prev => [...prev, newTodo])
setValue("")
앞에 let, const 붙이기
handleChange = (e) => {
this.setState({ value: e.target.value })
}
🔽
const handleChange = (e) => {
setValue(e.target.value)
}
함수명 앞에 있던 this. 을 빼준다.
<input
type="checkbox"
onChange={() => this.handleCompleChange(data.id)}
defaultChecked={data.completed}
/>{" "}
{data.title}
<button
style={this.btnStyle}
onClick={() => this.handleClick(data.id)}>
x
</button>
🔽
<input
type="checkbox"
defaultChecked={false}
onChange={() => handleCompleteChange(data.id)}
/>
{data.title}
<button style={btnStyle}
onClick={() => handleClick(data.id)}
>