state๋ ํ๋์ ์ปดํฌ๋ํธ ์์์๋ง ์ฌ์ฉํ ์ ์๋
๋
๋ฆฝ์ ์ธ ์ํ์ด๊ธฐ ๋๋ฌธ์ ์ ์ญ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
โ๏ธ์ฐธ๊ณ ) useState์ ์ ๋ฌ์ธ์๋ ํ๋๋ง ์ ๋ฌํ ์ ์์ต๋๋ค.
// ๊ธฐ๋ณธ ๊ตฌ์กฐ
const [state, setState] = useState(์ด๊ธฐ๊ฐ);
// ์ ์ฝ๋๋ฅผ ํ์ด ์ฐ๋ฉด ์๋์ ๊ฐ๋ค.
const state = React.useState(์ด๊ธฐ๊ฐ);
console.log(state[0]) // ์ด๊ธฐ๊ฐ
console.log(state[1]) // setState(์ํ๋๊ฐ)
1๏ธโฃ ์ง์ state๋ฅผ ์์ ํ๋ฉด ์๋๋ค.
const [state, setState] = useState("");
state = "TATA"
//โ๏ธ์ด๋ ๊ฒ ์ฌ์ฉํ๋ฉด ์ ๋จโ๏ธ
2๏ธโฃ state๋ ๋น๋๊ธฐ์ ์ผ ์ ์๋ค.
const [cnt, setCnt] = useState(0);
setCnt(cnt + 1);
setCnt(cnt + 1);
setCnt(cnt + 1);
// 1์ด ๋์ฌ ์๋, 2๋ 3์ด ๋์ฌ ์๋ ์์.
// ์๋์ฒ๋ผ ํจ์ ์ธ์๋ก ์ฌ์ฉํ๋ฉด ํด๊ฒฐ ๊ฐ๋ฅ.
setCnt((cnt) => cnt + 1);
setCnt((cnt) => cnt + 1);
setCnt((cnt) => cnt + 1);
// 3์ด ์ถ๋ ฅ
1๏ธโฃ input
function NameForm() {
const [name, setName] = useState("");
const handleChange = (e) => {
setName(e.target.value);
}
const handleClick = () => {
alert(name);
};
return (
<div>
<input type="text" value={name} onChange={handleChange}></input>
<button onClick={handleClick}>Button</button>
<h1>{name}</h1>
</div>
);
};
2๏ธโฃ select
function SelectExample() {
const [choice, setChoice] = useState("apple");
const fruits = ["apple", "orange", "pineapple", "strawberry", "grape"];
const options = fruits.map((fruit) => {
return <option value={fruit}>{fruit}</option>;
});
const handleFruit = (event) => {
setChoice(event.target.value)
};
return (
<div className="App">
<select onChange={handleFruit}>{options}</select>
<h3>You choose {choice}</h3>
</div>
);
}
props๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์์ ์ปดํฌ๋ํธ์๊ฒ
์ ๋ฌํด์ฃผ๋ ๋ฐ์ดํฐ property(๊ฐ์ฒด, ํค-๊ฐ)์ด๋ค.
function Parent() {
return (
<div className="parent">
<h1>I'm the parent</h1>
<Child text={"I'm the eldest child"} />
<Child text={"I'm the second child"} />
</div>
);
}
function Child(props) {
return (
<div className="child">
<p>{props.text}</p>
</div>
);
}
์ฌ๋ ํ๊ทธ์ ๋ซ๋ ํ๊ทธ์ ์ฌ์ด์ value๋ฅผ ๋ฃ์ด props.children๋ก ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ด๋ค.
function Parent() {
return (
<div className="parent">
<h1>I'm the parent</h1>
<Child>I'm the eldest child</Child>
</div>
);
};
function Child(props) {
return (
<div className="child">
<p>{props.children}</p>
</div>
);
};
const Child = (props) => <span>{props.text}</span>
// ์ ์ฝ๋๋ฅผ ๊ตฌ์กฐ๋ถํดํ ๋นํ๋ฉด ์๋์ ๊ฐ๋ค.
const Child = ({ text }) => <span>{text}</span>
const Child = (props) => <span style={props.style}>{props.text}</span>
// ์นด๋ฉ์ผ์ด์ค๋ก ์จ์ผ ํ๋ค.
<Child text={"TATA"} style={{ fontSize: '16px'}}/>
const Hello = (props) => <div>{props.name}</div>
function Say() {
const props = {
name: "walli"
};
return <Hello {...props} />;
}
1๏ธโฃ props๋ ์ฝ๊ธฐ ์ ์ฉ์ด๋ค.
ํจ์ ์ปดํฌ๋ํธ๋ ํด๋์ค ์ปดํฌ๋ํธ ๋ชจ๋ ์ปดํฌ๋ํธ์ ์์ฒด props๋ฅผ ์์ ํ๋ฉด ์๋๋ค.
๋ชจ๋ React์ปดํฌ๋ํธ๋ ์์ ์ props๋ฅผ ๋ค๋ฃฐ ๋ ๋ฐ๋์ ์์ ํจ์์ฒ๋ผ ๋์ํด์ผ ํ๋ค.
// ์์ ํจ์์ด๋ค.
function add(a, b){
return a + b;
}
// ์๋๋ ์์ ํจ์๊ฐ ์๋๋ค.
function add(a, b){
return a += b;
}
โท State
์ปดํฌ๋ํธ์ ์ํ๋ฅผ ๋ํ๋ธ๋ค.
์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ ์ธ๋๊ณ , ์ง์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค.(์ธ๋ถ์ ๊ณต๊ฐ ์ํจ)
โState๋ ์ธ์ ์ฌ์ฉํ๋์?
์ปดํฌ๋ํธ์ ์ํ๊ฐ์ ๋ํ๋ด๊ธฐ ์ํ ๊ฒ๋ค
(ex. ์ฒดํฌ๋ฐ์ค์ ์ฒดํฌ ๊ฐ, ๋ฆฌ์คํธ ๊ฐ, ํ
์คํธ๋ฐ์ค ์์ ํ
์คํธ ๋ฑ๋ฑ)
โท Props
์ฝ๊ธฐ ์ ์ฉ์ด๊ธฐ์ State์ฒ๋ผ ๋ณํ ์ ์๋ค.
์์๋ฐ์ ์ปดํฌ๋ํธ ๋ด์์ ์์ ์ด ๋ถ๊ฐ๋ฅํ๋ค.