use~
로 시작해야 한다.useState
훅은 컴포넌트내에서 상태를 업데이트하여 Re-Rendering(리렌더링)을 발생시키는 상태관리 hooks이다.
사용자의 인터랙션
에 의해서 상태가 업데이트된다.const [value, setValue] = useState(0);
import { useState } from 'react';
const RandomNumber = () => {
const [value, setValue] = useState(0);
const onClick = () => {
// 0 ~ 1000 까지의 무작위 숫자 생성 및 소수점 버림 처리
const randomNumber = Math.floor(Math.random() * 1000);
setValue(randomNumber);
}
return (
<div>
<p>현재 숫자: {value}</p>
<button onClick={onClick}>숫자 재생성</button>
</div>
);
}
export default RandomNumber;
위의 기능을 순수 자바스크립트를 사용하여 구현하면 아래처럼 작성할 수 있다.
매번 getElementById 메소드를 사용하여 반환된 엘리먼트의 속성을 일일히 변경해주는 과정이 없어진다. (Virtual DOM
사용의 장점)
<html>
<body>
<p id='current-value'></p>
<button id='generate-number'>숫자 재생성</button>
<script>
const currentValueElement = document.getElementById('current-value');
const generateNumberElement = document.getElementById('generate-number');
function onClick() {
const randomNumber = Math.floor(Math.random() * 1000);
currentValueElement.innerText = `현재 숫자: ${randomNumber}`;
}
generateNumberElement.addEventListener('click', onClick);
</script>
</body>
</html>
값이 아닌 주소값
이다.
useCallback
훅은 컴포넌트의 상태를 사용하는 함수
를 재사용 가능하도록 만들어주는 훅이다. (메모이제이션)
메모이제이션
이란 이전에 계산을 통해서 만들어진 값을 메모리에 저장하여 연산 과정을 생략하고 재사용하는 방법이다.