Frontend/React.js

[React.js] State를 Setting 하는 2가지 방법

th42500 2022. 4. 28. 00:23

해당 내용은 노마드코더 ReactJS로 영화 웹 서비스 만들기라는 강의를 듣고 작성한 내용임을 미리 알려드립니다.

자세한 내용은 노마드코더 홈페이지의 강의를 참고해주세요.

https://nomadcoders.co/react-for-beginners/lobby

 

ReactJS로 영화 웹 서비스 만들기 – 노마드 코더 Nomad Coders

왕초보를 위한 React

nomadcoders.co

 

 

State를 Setting하는 방법 (2가지)

 

1️⃣ 직접 값을 설정하는 방법

해당 방법은 이전에 작성했던 코드를 가져와 확인해보자.

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>
<body>
	<div id="root"></div>
</body>
	<script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
	<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
	<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
	<script type="text/babel">
		const root = document.getElementById("root");

		function App() {
			const [counter, setCounter] = React.useState(0);  // 1단계. 함수 내에서 return문 전에 상수 만들어주기
			const onClick = () => {
				setCounter(counter + 1);
			};
			return (
				<div>
					<h3>
						Total Clicks : {counter}
					</h3>
					<button onClick={onClick}>
						Click Me!!
					</button>
				</div>
			);
		}
		ReactDOM.render(<App />, root);
	</script>
</html>

위와 같이 값을 직접 설정할 경우 다른 어떤 곳에서 couter 변수를 업데이트 해주게되면 원하는 값을 얻지 못할 수 있다.

 

2️⃣ 함수를 전달하기

 

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>
<body>
	<div id="root"></div>
</body>
	<script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
	<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
	<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
	<script type="text/babel">
		const root = document.getElementById("root");

		function App() {
			const [counter, setCounter] = React.useState(0);  // 1단계. 함수 내에서 return문 전에 상수 만들어주기
			const onClick = () => {
				setCounter((current) => current + 1);
			};
			return (
				<div>
					<h3>
						Total Clicks : {counter}
					</h3>
					<button onClick={onClick}>
						Click Me!!
					</button>
				</div>
			);
		}
		ReactDOM.render(<App />, root);
	</script>
</html>

해당 코드와 같이 함수를 이용하여 값을 업데이트 한다면 예산치못한 업데이트가 어디선가 일어났다고 해도, 혼동을 주는 것을 방지할 수 있다.

 

즉, 2️⃣번과 같이 코드를 작성한다면 현재 state를 바탕으로 다음 state를 계산할 때 조금 더 안전한 방법이라고 할 수 있다.