์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- State
- WEB
- ์ปดํจํฐ ๊ณตํ
- ํ ์คํธ ์์
- JavaScript
- props drilling
- ์๋งจํฑ์์
- BFS์ DFS
- ๋ฒ๋ค๋ง
- Cmarket
- jsx
- git
- Study
- prototype
- wai-aria
- React
- Effect Hook
- ๊ณ ์ฐจํจ์
- ์คํ ์ด์ธ ์ฝ๋42๊ธฐ
- Lifting state
- ๋ฒ์ง ๋ชจํ
- ์คํ ์ด์ธ ์ฝ๋
- html
- css animation
- ํผํฐ ๋ชจ๋น์ ๋ฒ์ง ๋ชจํ
- ํผํฐ ๋ชจ๋น
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ ์ด์ฝฅ ๋์จ
- css
- fetch api
- Today
- Total
roqkf
[React] React์์์ State ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ณธ๋ฌธ

React์ ์ด๋ฒคํธ ์ฒ๋ฆฌ
๐น React์์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ์์ DOM ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ์๊ณผ ์ ์ฌํ๋ค. (๋ช ๊ฐ์ง์ ๋ฌธ๋ฒ ์ฐจ์ด๊ฐ ์์)
- React์์ ์ด๋ฒคํธ๋ ์นด๋ฉ ์ผ์ด์ค ์ฌ์ฉ
๐ ์๋ณ์ ํ๊ธฐ๋ฒ
- ์นด๋ฉ ํ๊ธฐ๋ฒ(Camal Case): ์๋ณ์ ํ๊ธฐ ์, ์ฌ๋ฌ ๋จ์ด๊ฐ ์ด์ด์ง๋ฉด ์ฒซ ๋จ์ด ์์๋ง ์๋ฌธ์๋ก ํ์ํ๊ณ ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ์ง์
- ํ์ค์นผ ํ๊ธฐ๋ฒ(Pascal Case): ์๋ณ์ ํ๊ธฐ ์, ์ฌ๋ฌ ๋จ์ด๊ฐ ์ด์ด์ง๋ฉด ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ ๋ชจ๋ ๋๋ฌธ์๋ก ์ง์
- ์ค๋ค์ดํฌ ํ๊ธฐ๋ฒ(Snake Case): ์๋ณ์ ํ๊ธฐ ์, ์ฌ๋ฌ ๋จ์ด๊ฐ ์ด์ด์ง๋ฉด ๋จ์ด ์ฌ์ด์ ์ธ๋๋ฐ ๋ฃ๋ ํ๊ธฐ๋ฒ
- ํ๊ฐ๋ฆฌ์ ํ๊ธฐ๋ฒ(Hungarian Case): ์๋ณ์ ํ์ ์, ๋์ด์ ์๋ฃํ์ ๋ถ์
- ํ๊ฐ๋ฆฌ์ ํ๊ธฐ๋ฒ์ JS์ ๊ฐ์ ๋์ ํ์
์ธ์ด์์ ๊ถํฉ์ ์ต์
์ด๋ผ๊ณ ํจ
https://namu.wiki/w/%ED%97%9D%EA%B0%80%EB%A6%AC%EC%95%88%20%ED%91%9C%EA%B8%B0%EB%B2%95
๐ HTML์์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ
<button onclick="handleEvent()">Event</button>
๐ React์์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ
<button onClick={handleEvent}>Event</button>
onChange
<input>, <textarea>, <select> ์ ๊ฐ์ ํผ ์๋ฆฌ๋จผํธ๋ ์ฌ์ฉ์์ ์ ๋ ฅ๊ฐ์ ์ ์ดํ๋ ๋ฐ์ ์ฌ์ฉ๋๋ค. React์์๋ ์ด๋ฌํ ๋ณ๊ฒฝ๋ ์ ์๋ ์ ๋ ฅ๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ์ปดํฌ๋ํธ์ state๋ก ๊ด๋ฆฌํ๊ณ ์ ๋ฐ์ดํธํ๋ค. onChange ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด e.target.value ๋ฅผ ํตํด ์ด๋ฒคํธ ๊ฐ์ฒด์ ๋ด๊ฒจ์ ธ ์๋ input ์ ๊ฐ์ ์ฝ์ ์ ์๋ค.
function NameForm() {
const [name, setName] = useState(""); // state ๋ฌธ์์ด ๋ณ์ ์ ์ธ, ๋ฐ๋๋ ๊ฐ์ setName ํจ์๋ฅผ ํตํด์ ๋ฆฌํด
const handleChange = (e) => {
setName(e.target.value); // ์ด๋ฒคํธ ํ๊ฒ์ value ๊ฐ์ผ๋ก ๋ฐ๊พธ๊ฒ ๋ค
};
return (
<div>
<input type="text" value={name} onChange={handleChange}></input>
{/* <input> ํ์
์ ํผ์ value๋ ํ์ฌ ๊ฐ์ด ๋ค์ด๊ฐ ์๋ name(์ด๊ธฐ๊ฐ์ด ""์ด์์ผ๋ฏ๋ก ํ์ฌ
name์๋ ""์ด ์๋ค. onChange ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด handlChange ํจ์๊ฐ ์คํ๋๋ฉฐ,
ํจ์ ๋ด์์๋ setName์ ํตํด input์ ๊ฐ์ ์๋กญ๊ฒ ๊ฐฑ์ ํ๋ค.) */}
<h1>{name}</h1>
</div>
);
}
์ปดํฌ๋ํธ return ๋ฌธ ์์์์ input ํ๊ทธ์ value ์ onChange๋ฅผ ๋ฃ์๋ค. onChange๋ input ์ ํ ์คํธ๊ฐ ๋ฐ๋ ๋๋ง๋ค ๋ฐ์ํ๋ ์ด๋ฒคํธ์ด๋ค. ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด handleChange ํจ์๊ฐ ์๋ํ์ฌ, ์ด๋ฒคํธ ๊ฐ์ฒด์ ๋ด๊ธด input ๊ฐ์ setState ๋ฅผ ํตํด์ ์๋ก์ด state๋ก ๊ฐฑ์ ํ๋ค.
onClick
onClick ์ ์ฌ์ฉ์๊ฐ ํด๋ฆญ ํ๋์ ํ์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ์ด๋ค. ๋ฒํผ์ด๋ <a> tag๋ฅผ ํตํด์ ๋งํฌ ์ด๋ ๋ฑ๊ณผ ๊ฐ์ด ์ฃผ๋ก ์ฌ์ฉ์ ํ๋์ ๋ฐ๋ผ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ํด์ผ ํ ๋ ์์ฃผ ์ฌ์ฉ๋๋ ์ด๋ฒคํธ์ด๋ค.
function NameForm() {
const [name, setName] = useState("");
const handleChange = (e) => {
setName(e.target.value);
};
const handleClick = () => {
alert(name);
};
return (
<div className="App">
<h1>Event handler practice</h1>
<input type="text" value={name} onChange={handleChange}></input>
{/* <button onClick={handleClick}>Button</button> */}
<button onClick={() => alert(name)}>Button</button>
<h3>{name}</h3>
</div>
);
}
๋ฒํผ์ ํด๋ฆญ ์, alert๋ฅผ ํตํด input ํ๊ทธ์ ์ ๋ ฅํ ์ด๋ฆ์ด ์๋ฆผ์ฐฝ ํ์ ์ฐฝ์ ๋์ด๋ค.
์ฐธ๊ณ : ์ฝ๋์คํ ์ด์ธ
'๐ป Development > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] Effect Hook (0) | 2022.12.11 |
---|---|
[React] React ๋ฐ์ดํฐ ํ๋ฆ๊ณผ Lifting state up (0) | 2022.12.11 |
[React] React State & Props (0) | 2022.11.30 |
[React] React Router (0) | 2022.11.30 |
[React] SPA (0) | 2022.11.30 |