๋ณํ์ง ์๋ ์ธ๋ถ ์ปดํฌ๋ํธ๋ก ๋ถํฐ ์ ๋ฌ๋ฐ์ ์์ฑ
Porps๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๊ฐ์ผ๋ก์จ ์์ ์ปดํฌ๋ํธ์ ๊ฐ์ ์ธ์๋ก ๋ฐ์ ๋ถํ์ํ ๊ตฌํ์ ํ์ง์๋๋ก ํด์ฃผ๋ ์์ฑ์ด๋ค.
์์์ ํ์ธํ๋ฏ์ด props๋ ๊ฐ์ฒด ํํ๋ก ๋ฐ์์จ๋ค.
๊ทธ๋ ๊ธฐ๋๋ฌธ์ ES6๋ฌธ๋ฒ์ ๊ตฌ์กฐ๋ถํดํ ๋น์ผ๋ก ๊ฐ์ฒด์์ ํ์ํ ๊ฐ๋ง ๋ฐ์์ฌ ์ ์๋ค.
ํ์ ์์๋ ์ด๋ ๊ฒ ๊ตฌ์กฐ๋ถํดํ ๋น์ ํ์ฉํ ๋ฐฉ๋ฒ์ ๋ง์ด ์ฐ๋ ํธ์ด๋ค.
props์ ์ฌ์ฉ์ ์ฐจ๋ ๋ค์๊ณผ ๊ฐ๋ค.
function Parent() {
return (
<div className="parent">
<h1>I'm the parent</h1>
<Child text={"I'm the eldest child"} />
<Child />
</div>
);
}
ํ์ ์ปดํฌ๋ํธ(Child)์ ์ ๋ฌํ ์์ฑ(text)๊ณผ ๊ฐ('I'm the eldest child') ์ ์
function Child(props) {
return (
<div className="child">
<p>{props.text}</p>
</div>
);
}
props๋ฅผ ์ธ์๋ก ๋ฐ์ ์์ ์ปดํฌ๋ํธ(Parent)์์ ์ ์๋ ๊ฐ๊ณผ ์์ฑ์ ์ ๋ฌ๋ฐ๋๋ค.
๊ทธ๋ฆฌ๊ณ , ์ ๋ฌ๋ฐ์ props๋ฅผ htmlํ๊ทธ๋ก ๋๋๋งํด์ค๋ค.
์ปดํฌ๋ํธ ๋ด์์ ๋ณํ ์ ์๋ ๊ฐ, ์ํ
์ฐ๋ฆฌ๊ฐ ํํ ์ฌ์ฉํ๋ ์นํ์ด์ง์์ ์ํ๊ด๋ฆฌ๋ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ค.
์๋ฅผ ๋ค์ด, ์ผํ๋ชฐ ์ฌ์ดํธ์ ์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง์์ ์ด ๋ฌผ๊ฑด์ ์ฒดํฌํ๋ ์ฒดํฌ๋ฐ์ค์๋ ์ํ๊ฐ ์กด์ฌํ๋ค.
์ฒดํฌ๊ฐ ๋ ์ํ
/ ์ฒดํฌ๊ฐ ๋์ง ์์ ์ํ
์ฒดํฌ๊ฐ ๋ ํญ๋ชฉ์ ๊ฐ๊ณผ ์๋์ ํฉ์ฐํ์ฌ ์ต์ข
๊ตฌ๋งค๊ฐ๊ฒฉ๊ณผ ๊ตฌ๋งคํญ๋ชฉ์ ํ๋ฉด์ ๋ณด์ฌ์ค๋ค.
์ด์ฒ๋ผ, ์ํ์ ๋ฐ๋ผ ํ๋ฉด์ด ๋ฌ๋ผ์ง๋ ๊ฒ์ React State์ useState๋ฅผ ํตํด ๊ตฌํํ ์ ์๋ค.
import React, { useState } from "react";
React๋ก ๋ถํฐ useState๋ฅผ import
ํค์๋๋ฅผ ํตํด ๋ถ๋ฌ์์ค๋ค.
const Checkbox = () => {
const [isChecked, setIsChecked] = useState(false);
}
์ปดํฌ๋ํธ ์์์ useStateํจ์๋ฅผ ํธ์ถํ๋ค.
์ด๋, isChecked๋ ์ํ๊ฐ ์ ์ฅ๋ ๋ณ์์ด๋ค.
setIsChecked๋ isChecked์ ์ํ๋ฅผ ๋ณ๊ฒฝํด ์ค ์ํ๋ณ๊ฒฝํจ์์ด๋ค.
์์ ์ฝ๋์ฒ๋ผ isChecked, setIsChecked์ useState์ ๋ฆฌํด๊ฐ์ ๊ตฌ์กฐ๋ถํดํ ๋นํ๊ณ ์๋ค.
useState์ ํ๋ผ๋ฏธํฐ๋ isChecked์ ์ด๊ธฐ๊ฐ์ด ๋๋ค.
๋ค์ ์ ๋ฆฌํ์๋ฉด,
const [state ์ ์ฅ ๋ณ์, state ๊ฐฑ๊ธด ํจ์] = useState(์ํ ์ด๊ธฐ ๊ฐ);
<span> {isChecked ? "Checked!" : "Unchecked"} </span>
jsx ์๋ฆฌ๋จผํธ ์์ ์ผํญ์ฐ์ฐ์๋ฅผ ํ์ฉํ์ฌ ์ํ๋ณ์ (isChecked)๋ฅผ ์กฐ๊ฑด์ ๋ง๊ฒ ์ฌ์ฉํ๋ฉด ๋๋ค.
const CheckboxExample = () => {
const [isChecked, setIsChecked] = useState(false);
const handleChecked = (event) => {
setIsChecked(event.target.checked);
};
return (
<div className="App">
<input type="checkbox" checked={isChecked} onChange={handleChecked} />
<span>{isChecked ? "Checked!!" : "Unchecked"}</span>
</div>
);
}
state๋ฅผ ๊ฐฑ์ ํ๋ ค๋ฉด ์ํ๋ณ๊ฒฝํจ์์ธ SetIsChecked๋ฅผ ํธ์ถํด์ผ ๋๋ค.
์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด,
์ฒดํฌ๋ฐ์ค์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด handleChecked ํจ์๊ฐ ํธ์ถ๋๊ณ ,
handleChecked ํจ์์์ event.target.checked(์ฒดํฌ๋ฐ์ค์ ์ฒดํฌ์ฌ๋ถ)๊ฐ setIsChecked ํจ์๋ฅผ ํตํด isChecked ๋ณ์์ ํ ๋น(๊ฐฑ์ )๋๋ค.
isChecked ๋ณ์๊ฐ ๊ฐฑ์ ๋๋ฉด, React๋ ๊ฐฑ์ ๋ isChecked๋ฅผ CheckboxExample ์ปดํฌ๋ํธ์ ๋๊ฒจ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋๋๋งํ๋ค.
โ๏ธ ์ด ๋, ๋ฐ๋์ ์ํ๋ณ๊ฒฝํจ์๋ฅผ ํตํด ์ํ๋ฅผ ๋ณ๊ฒฝํด์ผ ๋ฆฌ๋๋๋ง์ด ๋๊ณ , ๊ทธ๋ฅ ์ง์ ์ ์ผ๋ก ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ค๋ฉด ๋ฆฌ๋๋๋ง์ด ๋์ง ์๋๋ค.