State란 말 그대로 컴포넌트의 상태 값이다.
state와 props는 둘 다 object이고, 화면에 보여줄 정보(상태)를 가지고 있다는 점에서 서로 비슷한 역할을 한다. props는 컴포넌트를 사용하는 부모쪽에서 전달해야만 사용할 수 있고(함수의 파라미터처럼) 읽기 전용이다.
import { useState } from "react";
import ReactDOM from "react-dom";
function Button(props) {
const [isClicked, setIsClicked] = useState(false);
return (
<button className="btn" onClick={() => setIsClicked(!isClicked)}>
{isClicked ? "좋아요" : "싫어요"}
</button>
);
}
ReactDOM.render(<Button />, document.getElementById("root"));
-isClicked라는 하나의 state만 있지만, 여러 개의 state를 추가할 수 있다.
state의 이름은 원하는대로 지을 수 있다.
::설명
::설명
import { useState } from "react";
import ReactDOM from "react-dom";
import "./index.css";
function Button(props) {
const [isClicked, setIsClicked] = useState(false);
return (
<button
className={`btn ${props.type === "like" ? "like" : ""}`}
onClick={() => setIsClicked(!isClicked)}>
{isClicked ? "좋아요" : "싫어요"}
</button>
);
}
ReactDOM.render(<Button type="like" />, document.getElementById("root"));
<button "/">에 type을 추가했고, button컴포넌트에서 props로 받을 수 있다.
props.type이 'like'이면 like-btn이라는 class속성이 추가된다. 미리.like-btn에 배경색이 나오도록 css는 추가해 두었다.