훅의 호출 타이밍 이해하기
- hook이 호출되는 타이밍을 확인하기 위해 간단한 예제를 구현한다.
const App = () => {
console.log("App render start")
const [show, setShow] = React.useState(() => {
console.log("App useState")
})
function handleClick() {
setShow((prev) => !prev)
}
React.useEffect(() => {
console.log("useEffect null")
})
React.useEffect(() => {
console.log("useEffect null")
}, [])
React.useEffect(() => {
console.log("useEffect null")
}, [show])
return (
<>
<button onClick={handleClick}>Search</button>
{ show ?
<>
<input />
<p></p>
</>
: null
}
</>
)
}
- setState 에는 기본적으로 전에 set된 값이 prev로 들어가게 된다.
- setShow에서 이전 값을 이용하여 !prev 역의 값을 넣어 줄 수 있다.
- useEffect의 경우 아무것도 넣지 않은 케이스는 모든 변화에 작동한다.
- [] 빈 리스트를 넣은 effect는 최초 한 번만 동작한다.
- [show] 리스트에 show를 넣은 경우 show의 변화에 동작하게 된다.
참조
- 패스트 캠퍼스 온라인 강좌(한 번에 끝내는 React의 모든 것 초격자 패키지 Online)