
const [state, setState] = useState(초기값);
app.js 와 index.js 의 코드는 각각 아래와 같다.
⇒ app.js
import { useState } from "react";
function App() {
const [counter, setValue] = useState(0);
const onClick = () => setValue((prev) => prev + 1);
console.log("render!!!");
return (
<div>
<h1>Click Count is {counter}</h1>
<button onClick={onClick}>Click this Button</button>
</div>
);
}
export default App;
⇒ index.js
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById("root")
);
⇒ 결과

⇒ 원인 분석
create-react-app으로 리액트 앱을 생성했다.create-react-app으로 리액트 앱을 생성했을 경우, StrictMode 태그를 기본적으로 생성한다.⇒ 해결 방법
⇒ index.js 수정
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
ReactDOM.render(<App />, document.getElementById("root"));
⇒ 결과

StrictMode는 리액트에서 제공하는 검사 도구create-react-app으로 리액트 앱을 생성하면 기본적으로 생성되는 태그임⇒ App.js
import { useState } from "react";
function App() {
const [counter, setCounter] = useState(0);
const onClick = () => setCounter((cnt) => cnt + 1);
const [inputVal, setInputVal] = useState("");
const onHandleChange = (e) => setInputVal(e.target.value);
const [liked, setLiked] = useState(true);
function onHandleCheck(e) {
setLiked(e.target.checked);
}
//const onHandleCheck = (e) => setLiked(e.target.checked);
return (
<div>
<button onClick={onClick}>Click number is {counter}!!!</button>
<br />
<br />
<input value={inputVal} onChange={onHandleChange} />
<p>Text is {inputVal}</p>
<label>
<input type="checkbox" checked={liked} onChange={onHandleCheck} />I
liked this!
</label>
<p>You {liked ? "liked" : "did not like"} programming!</p>
</div>
);
}
export default App;
⇒ 체크박스 true

⇒ 체크박스 false
