useState

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>

리액트의 불변성(Immutable)

Untitled

useCallback