์ผ์ผ๊ฐ ๋๋ ์ ๋ฆฌ์กํธ ๊ธฐ์ด๋ฅผ ๋ฐฐ์ ์ต๋๋ค!
ํ๋ฃจ์ ๋ชจ๋ ๋ด์ฉ์ ๋ฐฐ์ฐ์ง ์์ผ๋๊น ๋ฐฐ์ ๋ ๋ด์ฉ๋ค์ด ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐ์ด ๋์ง ์๋ ๊ฒ ๊ฐ์์ ์ฃผ๋ง์ ๋ง์ ํ๋ฒ ์ญ ํ์ด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๊ฒ๋ค๊ฐ ๋ด์ฃผ์ HA์์ด์ ์ด์ธ์ ๋ด์ฉ๋ค๋ ๋ ๊ณต๋ถํด์ผ ํ ๊ฒ ๊ฐ์์!
๊ทธ๋์ ์ฃผ๋ง์ด...์์ด์ง ๊ฒ ๊ฐ์ต๋๋คใ
์ผ๋จ ์ค๋์ State์ Props์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
ํฌ๊ฒ ๋ณด๋ฉด State๋ ๋ณํํ๋ ์์ฑ์ผ ๋ ์ฌ์ฉํ๊ณ , Props๋ ๋ณํํ์ง ์๋ ์์ฑ์ผ ๋ ์ฌ์ฉํฉ๋๋ค.
State
State์ ์ฅ์ ์ผ๋ก๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด HTML์ด ์๋์ผ๋ก ์ฌ๋ ๋๋ง ๋ฉ๋๋ค.
์ฆ, ์๋ก๊ณ ์นจ ์ํด๋ ์์์ ์ค๋ฌด์คํ๊ฒ ์ ๋ ๋๋ง์ด ๋ฉ๋๋ค.
state ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ useState๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
import { useState } from "react"; //์๋จ์ useState๋ฅผ ๋ถ๋ฌ์จ ํ
function CheckboxExample() {
const [isChecked, setIsChecked] = useState(false);
const [state ์ ์ฅ ๋ณ์, state ๊ฐฑ์ ํจ์] = useState(์ํ ์ด๊ธฐ ๊ฐ);
//์ ๋ ์ค์ ๋ป์ ๊ฐ์ต๋๋ค.
React state๋ ๊ฐ์ ๋ก ๋ณ๊ฒฝ์ ์๋ํ๋ฉด ์ ๋ฉ๋๋ค.
deep copy๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
Props
Props๋ ์์ ์ปดํฌ๋ํธ๋ก ๋ถํฐ ์ ๋ฌ๋ฐ์ ๊ฐ์ ๋๋ค.
ํํ๋ ๊ฐ์ฒด ํํ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์ ๋งํ๋ฏ์ด State์ ๋ฌ๋ฆฌ ํจ๋ถ๋ก ๋ณ๊ฒฝ๋๊ธฐ ์ด๋ ต์ต๋๋ค.
Props๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํฌ๊ฒ ์ธ๊ฐ์ง ๋จ๊ณ๋ก ๋๋์ด์ง๋๋ค.
1. ํ์ ์ปดํฌ๋ํธ์ ์ ๋ฌํ๊ณ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ํฉ๋๋ค.
<Child attribute={value} />
2. Props๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํฉ๋๋ค.
3. ์ ๋ฌ๋ฐ์ Props๋ฅผ ๋ ๋๋งํฉ๋๋ค.
function Child(props) {
return (
<div className="child">
<p>{props.text}</p>
</div>
);
};
์ด๋ฒคํธ ํธ๋ค๋ง
DOM์์์ ์ด๋ฒคํธ ํธ๋ค๋ง๊ณผ ๋น์ทํฉ๋๋ค.
๋์ React์์๋ ์ด๋ฒคํธ๋ฅผ ์๋ฌธ์ ๋์ ์นด๋ฉ ์ผ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
JSX๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ด ์๋ ํจ์๋ก ์ด๋ฒคํธ ์ฒ๋ฆฌ ํจ์๋ฅผ ์ ๋ฌํฉ๋๋ค.
onClick, onChange, select ๋ฑ์ด ์์ต๋๋ค.
์ด๋ฒคํธ ํธ๋ค๋ฌ๋
1. useState๋ฅผ ํตํด ๋ณ์์ ๊ฐฑ์ ํจ์๋ฅผ ๊ฐ์ ธ์ค๊ณ ,
2. ๊ฐฑ์ ํจ์๋ฅผ el.target.value์ ์ ์ฉํ๊ธฐ ์ํด ๋ณ์์ ํ ๋นํด์ค ํ,
3. return ๋ฌธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
function NameForm() {
const [name, setName] = useState(""); // 1. useState๋ฅผ ํตํด ๋ณ์์ ๊ฐฑ์ ํจ์ ๊ฐ์ ธ์ค๊ธฐ
const handleChange = (e) => {
setName(e.target.value);
} // 2. el.target.value ๋ณ์ ํ ๋นํ๊ธฐ
return (
<div>
<input type="text" value={name} onChange={handleChange}></input>
<h1>{name}</h1>
</div>
)
}; // 3. Return๋ฌธ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ ์ฉํ๊ธฐ'TIL > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| TIL23: [JS/Node] ๊ฐ์ฒด ์งํฅ JavaScript (0) | 2021.08.23 |
|---|---|
| TIL 22 (1): ์น ๊ตฌ๋ ๋ฐฉ์ (0) | 2021.08.21 |
| TIL 19: React ๊ธฐ์ด - SPA (0) | 2021.08.12 |
| TIL18: React ๊ธฐ์ด (0) | 2021.08.11 |
| TIL 17: ๊ณ ์ฐจํจ์ (0) | 2021.08.11 |