# Hook은 함수 컴포넌트에서 사용하는 메소드입니다.
함수 컴포넌트 이전에는 클래스(class) 컴포넌트가 있었습니다.
# class component
class Counter extends Component {
constructor(props) {
super(props);
this.state = {
counter: 0
}
this.handleIncrease = this.handleIncrease.bind(this);
}
handleIncrease = () => {
this.setState({
counter: this.state.counter + 1
})
}
render(){
return (
<div>
<p>You clicked {this.state.counter} times</p>
<button onClick={this.handleIncrease}>
Click me
</button>
</div>
)
}
}
# function component
function Counter () {
const [counter, setCounter] = useState(0);
const handleIncrease = () => {
setCounter(counter + 1)
}
return (
<div>
<p>You clicked {counter} times</p>
<button onClick={handleIncrease}>
Click me
</button>
</div>
)
}
-Counter 컴포넌트에서 useState() Hook을 호출해 함수 컴포넌트(function component) 안에 state를 추가한 형태입니다.
-함수형 컴포넌트는 클래스형 컴포넌트에 비해 훨씬 더 직관적이고, 보기 쉽다는 특징이 있습니다.
- 이 state는 컴포넌트가 리렌더링 되어도 그대로 유지될 것입니다. 해당 컴포넌트에서 State Hook은 하나만 사용했지만 때에 따라서 여러 개 사용할 수 있습니다.
# hook
-Hook은 React 16.8에 새로 추가된 기능입니다. Hook은 class를 작성하지 않고도 state와 다른 React의 기능들을 사용할 수 있게 해줍니다.
-다르게 말하면 함수형 컴포넌트에서 상태 값 및 다른 여러 기능을 사용하기 편리하게 해주는 메소드를 의미합니다.
-class가 아닌 function으로만 React를 사용할 수 있게 해주는 것이기 때문에 클래스형 컴포넌트에서는 동작하지 않습니다.
# hook 사용규칙
1. 리액트 함수의 최상위에서만 호출해야 한다.
-일반함수, 반복문, 조건문, 중첩된 함수 내에서 Hook을 실행하면 동작하지 않는다.
2.오직 리액트 함수 내에서만 사용되어야 한다.
-리액트 함수형 컴포넌트나 커스텀 Hook이 아닌 다른 일반 JavaScript 함수 안에서 호출해서는 안 된다.
-애초에 Hook은 React의 함수 컴포넌트 내에서 사용되도록 만들어진 메소드이기 때문에 근본적으로 일반 JavaScript 함수 내에서는 정상적으로 돌아가지 않습니다.
출처
코드스테이츠
'부트캠프교육중 > react' 카테고리의 다른 글
useCallback (0) | 2023.03.22 |
---|---|
useMemo (0) | 2023.03.22 |
React Diffing Algorithm (0) | 2023.03.22 |
Virtual DOM (0) | 2023.03.22 |
웹팩 과제하다가 살짝정리한거 (0) | 2023.03.21 |