8. useState() hook
리액트에서의 state는 리액트 컴포넌트의 상태를 의미, 즉 리액트 컴포넌트의 변경 가능한 데이터
- 직접 state를 수정하지 않는다. 랜더링이 일이나지 않음.
- set함수를 이용하여 값을 수정
const [변수명,set함수명] = useState(초깃값)

src/App.jsx
import ProfilePicture from "./08/ProfilePicture"
import MyComponent_08 from "./08/MyComponent"
import Counter from "./08/Counter"
export default function App() {
return (
<>
<ProfilePicture/>
<MyComponent_08/>
<Counter/>
</>
)
}
src/08/ProfilePicture.jsx
import { useState } from "react";
export default function ProfilePicture(){
const imgurl = './src/assets/profile.png';
let displayVales = ""
const styles = {display:displayVales}
const handleClick = () => {
displayVales ? displayVales = "" : displayVales = "none"
document.getElementById('dis').style.display = displayVales
}
const [display,setDisplay] = useState("");
const styles1 = {display:display}
const handleClick1 = () => {
setDisplay(display ? "" : "none" )
}
return(
<>
<img src={imgurl} style={styles} id="dis"></img>
<button onClick={handleClick}>이미지1</button>
<br/>
<img src={imgurl} style={styles1}></img>
<button onClick={handleClick1}>이미지2</button>
</>
)
}
src/08/MyComponent.jsx
import { useState } from "react";
export default function MyComponent_08(){
let age_1 = 0
let name_1 = "Guest"
let isEmployed_1 = false
const [name,setName] = useState("Guest");
const [age, setAge] = useState(0);
const [isEmployed,setIsEmployed] = useState(false);
const updateName = () => {
setName("홍길동");
name_1 ="홍길동"
}
const incrementAge = () => {
setAge(age+1);
age_1 += 1;
}
const toggleEmployedStatus = () => {
setIsEmployed(!isEmployed);
}
return(
<div>
<span>Name_1: {name_1}</span> <span>Name: {name}</span>
<button className="border-1" onClick={updateName}>Set Name</button><br/>
<span>Age_1: {age_1}</span> <span>Age: {age}</span>
<button className="border-1" onClick={incrementAge}>Increment Age</button><br/>
<span>Is employed: {isEmployed?"yes":"no"}</span>
<button className="border-1" onClick={toggleEmployedStatus}>Toggle Status</button>
</div>
)
}
src/08/Counter.jsx
import { useState } from "react";
export default function Counter(){
const [count,setCount] = useState(0);
const increment = () =>{
setCount(count + 1);
}
const decrement = () => {
setCount(count - 1);
}
const reset = () => {
setCount(0);
}
return(
<div>
<p>{count}</p>
<button onClick={decrement}>Decrement</button>
<button onClick={reset}>Reset</button>
<button onClick={increment}>Increment</button>
</div>
);
}