✳ 두 방법을 사용해 보고 비교해 보려고 한다.
◾ Vanilla js code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<span>Total Click: 0</span>
<button id="btn">Click ME</button>
</body>
<script>
let counter = 0;
const button = document.querySelector("#btn");
const span = document.querySelector("span");
function handleMouseClick() {
counter = counter + 1;
span.innerText = `Total Click: ${counter}`;
}
button.addEventListener("click", handleMouseClick);
</script>
</html>
◾ react js code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div class="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.querySelector(".root");
function App() {
const [counter, setCounter] = React.useState(0);
const onClick = () => {
// setCounter(counter + 1);
setCounter((current) => current + 1); // 이 방법이 더 안전함
};
return (
<div>
<h3>Totla clicks: {counter}</h3>
<button onClick={onClick}>Click me</button>
</div>
);
}
ReactDOM.render(<App />, root);
</script>
</html>
익숙해서 그런지 뭔가 vanilla 가 더 편한 거 같은데 별로 react 가 와닿지 않는 거 같은 느낌이 든다.