React 컴포넌트를 만들때 클래스형 컴포넌트, 함수형 컴포넌트 2가지 방식이 있다
과거에는 클래스형 컴포넌트를 많이 사용했지만 2019년 v16.8 부터 함수형 컴포넌트에 리액트 훅(hook)을 지원해 주어서 현재는 공식 문서에서도 함수형 컴포넌트와 훅(hook)을 함께 사용할 것을 권장하고 있다.
1) 선언방식
class App extends Component {
render() {
const name = "클래스형 컴포넌트"
return <div>{name}</div>
}
}
const App = () => {
const name = "함수형 컴포넌트"
return <div>{name}</div>
}
2) state
📌 State 란?
컴포넌트 내부에서 바뀔 수 있는 값
class App extends Component {
constructor(props) {
super(props)
this.state = {
test1 : [],
test2 : '',
number : 1
}
}
testFunction = () => {
this.setState({ number : number + 1 })
}
render() {
const name = "클래스형 컴포넌트"
return <div>{name}</div>
}
}
const App = () => {
const [test1, setTest1] = useState([])
const [test2, setTest2] = useState('')
const [number, setNumber] = useState(1)
const testFunction = () => {
setNumber(number + 1)
}
const name= "함수형 컴포넌트"
return <div>{name}</div>
}
3) props
📌 Props 란?
class App extends Component {
render() {
const {number, testName} = this.props
const title = "클래스형 컴포넌트"
return <div>{testName}의 나이는 {number}살 입니다.</div>
}
}
const App = ({ number, testName }) => {
const title = "함수형 컴포넌트"
return (
<div>{testName}의 나이는 {number}살이다.</div>
)
}
4) 이벤트 핸들링
class App extends Component {
constructor(props) {
super(props)
this.state = {
number : 1
}
}
onClickFunc = () => {
this.setState({ number : number + 1 })
}
render() {
const title = "클래스형 컴포넌트"
return(
<div>
<button onClick={this.onClickFunc}>+1 버튼</button>
</div>
)
}
}
const App = () => {
const [number, setNumber] = useState('')
const onClickFunc = () => {
setNumber(number + 1)
}
const name = "함수형 컴포넌트"
return(
<div>
<button onClick={onClickFunc}>+1 버튼</button>
</div>
)
}
5) Life Cycle
📌 Life Cycle 이란?
참고 : 왜 함수형 컴포넌트를 사용하는가
참고 : 함수형 컴포넌트와 클래스형 컴포넌트의 차이 - 태어난김에 개발자