์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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
- ์คํ ์ด์ธ ์ฝ๋
- ์ปดํจํฐ ๊ณตํ
- css
- wai-aria
- ์คํ ์ด์ธ ์ฝ๋42๊ธฐ
- ๋ฒ์ง ๋ชจํ
- Cmarket
- css animation
- prototype
- React
- html
- fetch api
- props drilling
- ์ ์ด์ฝฅ ๋์จ
- JavaScript
- BFS์ DFS
- ์๋งจํฑ์์
- ํ๋ก๊ทธ๋๋จธ์ค
- jsx
- Study
- Lifting state
- Effect Hook
- ๊ณ ์ฐจํจ์
- ๋ฒ๋ค๋ง
- git
- ํผํฐ ๋ชจ๋น
- ํผํฐ ๋ชจ๋น์ ๋ฒ์ง ๋ชจํ
- ํ ์คํธ ์์
- WEB
- Today
- Total
๋ชฉ๋ก๐ป Development/React (19)
roqkf

๐ Intro React๋ ํ์ฌ๋ ๊ณ์ํด์ ์ ๋ฐ์ดํธ๊ฐ ๋๊ณ ์๋ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ด๋ฒ์ React๊ฐ ๋ฒ์ 18๋ก ์ ๋ฐ์ดํธ๊ฐ ๋๋ฉด์ ๋ง์ ๋ถ๋ถ์ด ๋ฐ๋์๋๋ฐ, ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์์๋ณผ ์ ์๋ ๋ณํ๋ ์ฝ์ ์ฐฝ์ ์ด์ ์ ๋ณด์ด์ง ์๋ ๊ฒฝ๊ณ ๋ฌธ์ด ๋ณด์ธ๋ค ๊ฒ์ด๋ค. [๊ทธ๋ฆผ] React 18๋ก ์ ๋ฐ์ดํธ ๋ ๋ค ๋ณด์ด๊ฒ ๋ ๊ฒฝ๊ณ ๋ฌธ ํด๋น ๊ฒฝ๊ณ ๋ฌธ์ ์ด์ React 18 ๋ฒ์ ์ ๋์ด์ ReactDOM.render๋ฅผ ์ง์ํ์ง ์๋๋ค๋ ๋ด์ฉ์ด๋ค. ๋ฌผ๋ก ๋ฒ์ ์ด 18๋ณด๋ค ๋ฎ์ ์ฑ์์๋ ํด๋น ๊ฒฝ๊ณ ๋ฌธ์ ๋ณด์ด์ง ์๋๋ค. ๊ทธ๋ฌ๋ ๊ณ์ํด์ ์ ๋ฐ์ดํธ๊ฐ ๋๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋๋งํผ ํด๋น ์ด์๋ ์์๋ฌ์ผ ํ ๊ฒ์ด๋ค. ์ธ์ ๊น์ง 18 ๋ฒ์ ์ดํ๋ง ์ฌ์ฉํ ์ผ์ ์์ ๊ฒ์ด๊ณ , 18 ๋ฒ์ ์ ์ฐ๋๋ฐ๋ ์ง์ํ์ง ์๋ ์ด์ ์ ๋ฌธ๋ฒ์ ์ฌ์ฉํด์๋ ์ ๋๊ธฐ ๋๋ฌธ์ด๋ค..

๐ Custom Hooks ๊ฐ๋ฐ์๊ฐ ์ค์ค๋ก ์ปค์คํ ํ ํ ์ ์๋ฏธ ์ด๋ฅผ ์ด์ฉํด ๋ฐ๋ณต๋๋ ๋ก์ง์ ํจ์๋ก ๋ฝ์๋ด์ด ์ฌ์ฌ์ฉํ ์ ์๋ค. ์ฌ๋ฌ url์ fetchํ ๋, ์ฌ๋ฌ input์ ์ํ ์ํ ๋ณ๊ฒฝ ๋ฑ ๋ฐ๋ณต๋๋ ๋ก์ง์ ๋์ผํ ํจ์์์ ์๋ํ๊ฒ ํ๊ณ ์ถ์ ๋ ์ปค์คํ ํ ์ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ์ด๋ฅผ ์ด์ฉํ๋ฉด ์ํ๊ด๋ฆฌ ๋ก์ง์ ์ฌํ์ฉ์ด ๊ฐ๋ฅํ๊ณ ํด๋์ค ์ปดํฌ๋ํธ๋ณด๋ค ์ ์ ์์ ์ฝ๋๋ก ๋์ผํ ๋ก์ง์ ๊ตฌํํ ์ ์์ผ๋ฉฐ ํจ์ํ์ผ๋ก ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋ณด๋ค ๋ช ๋ฃํ๋ค๋ ์ฅ์ ์ด ์๋ค. (e.g. useSomething) //FriendStatus : ์น๊ตฌ๊ฐ online์ธ์ง offline์ธ์ง returnํ๋ ์ปดํฌ๋ํธ function FriendStatus(props) { const [isOnline, setIsOnline] = useSta..

๐ useCallback์ด๋? ๋ฉ๋ชจ์ด์ ์ด์ ๊ธฐ๋ฒ์ ์ด์ฉํ Hook useMemo: ๊ฐ์ ์ฌ์ฌ์ฉ์ ์ํด ์ฌ์ฉํ๋ Hook useCallback: ํจ์์ ์ฌ์ฌ์ฉ์ ์ํด ์ฌ์ฉํ๋ Hook function Calculator({x, y}){ const add = () => x + y; return {add()} ; }ํ์ฌ ์ด Calculator ์ปดํฌ๋ํธ ๋ด์๋ add๋ผ๋ ํจ์๊ฐ ์ ์ธ์ด ๋์ด ์๋ ์ํ์ด๋ค. ์ด add ํจ์๋ props๋ก ๋์ด์จ x์ y ๊ฐ์ ๋ํด ํ๊ทธ์ ๊ฐ์ ์ถ๋ ฅํ๊ณ ์๋ค. ์ด ํจ์๋ ํด๋น ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋ ๋๋ง๋ค ์๋กญ๊ฒ ๋ง๋ค์ด์ง ๊ฒ์ด๋ค. useMemo์ ๋ง์ฐฌ๊ฐ์ง๋ก, ํด๋น ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง ๋๋๋ผ๋ ๊ทธ ํจ์๊ฐ ์์กดํ๊ณ ์๋ ๊ฐ์ธ x์ y๊ฐ ๋ฐ๋์ง ์๋๋ค๊ณ ์๊ฐํด ๋ณด์. ๊ทธ๋ ๋ค๋ฉด ํจ์ ๋ํ ..

์ปดํฌ๋ํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํ๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง์ด ๋ ๋๋ง๋ค ๋ฆฌ๋ ๋๋ง์ ํ๋ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ทธ๋ฌ๋ ๋๋ฌด ์ฆ์ ๋ฆฌ๋ ๋๋ง์ ์ฑ์ ์ข์ง ์์ ์ฑ๋ฅ์ ๋ผ์น๋ค. [๊ทธ๋ฆผ] ๋๋ฌด ๋ง์ ๋ ๋๋ง์ ์ฑ์ ์ ์ข์ ์ฑ๋ฅ์ ๋ฏธ์น๋ ๊ทน๋จ์ ์ธ ์ ๋ ๋๋ง ์ต์ ํ๋ฅผ ์ํ Hook๋ ์กด์ฌํ๋๋ฐ, useCallback๊ณผ useMemo๊ฐ ๋ฐ๋ก ๊ทธ ์ญํ ์ ํ๋ Hook์ด๋ค. ๐ useMemo๋? ํน์ ๊ฐ(value)๋ฅผ ์ฌ์ฌ์ฉํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ Hook function Calculator({value}){ const result = calculate(value); return {result} ; }ํด๋น ์ปดํฌ๋ํธ๋ props๋ก ๋์ด์จ value๊ฐ์ calculate๋ผ๋ ํจ์์ ์ธ์๋ก ๋๊ฒจ์ result ๊ฐ์ ๊ตฌํ ํ..

๐ Function Component์ Class Component Hook์ ํจ์ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ๋ ๋ฉ์๋์ ๋๋ค. ํจ์ ์ปดํฌ๋ํธ ์ด์ ์๋ ํด๋์ค(class) ์ปดํฌ๋ํธ๊ฐ ์์์ต๋๋ค. ๋ง์ React ๊ฐ๋ฐ์๋ค์ด ์ด ํด๋์ค ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ React ์ฑ์ ๊ฐ๋ฐํด์์ต๋๋ค. React์ ํด๋์ค ์ปดํฌ๋ํธ๋ ์กฐ๊ธ ์์ํ ๊ฐ๋ ์ผ ์ ์์ต๋๋ค. โจ Class Component ์ฌ๊ธฐ ์ปดํฌ๋ํธ๋ฅผ ํด๋์ค๋ก ์์ฑํ ๊ฐ๋จํ ์ฝ๋๋ฅผ ๋ณด๊ฒ ์ต๋๋ค. class Counter extends Component { constructor(props) { super(props); this.state = { counter: 0 } this.handleIncrease = this.handleIncrease.bind(this); } hand..

๐ React Diffing Algorithm React๊ฐ ๊ธฐ์กด ๊ฐ์ DOM๊ณผ ๋ณ๊ฒฝ๋ ์๋ก์ด ๊ฐ์ DOM์ ๋น๊ตํ ๋, React ์ ์ฅ์์๋ ๋ณ๊ฒฝ๋ ์๋ก์ด ๊ฐ์ DOM ํธ๋ฆฌ์ ๋ถํฉํ๋๋ก ๊ธฐ์กด์ UI๋ฅผ ํจ์จ์ ์ผ๋ก ๊ฐฑ์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ผ ํ์๊ฐ ์์์ต๋๋ค. ์ฆ ํ๋์ ํธ๋ฆฌ๋ฅผ ๋ค๋ฅธ ํธ๋ฆฌ๋ก ๋ณํ์ ์ํค๋ ๊ฐ์ฅ ์์ ์กฐ์ ๋ฐฉ์์ ์์๋ด์ผ๋ง ํ๋๋ฐ, ์์๋ธ ์กฐ์ ๋ฐฉ์ ์๊ณ ๋ฆฌ์ฆ์ O(n^3)์ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ณ ์์์ต๋๋ค. ๋ง์ฝ ์ด ์๊ณ ๋ฆฌ์ฆ์ ๊ทธ๋๋ก React์ ์ ์ฉํ๋ค๋ฉด 1000๊ฐ์ ์๋ฆฌ๋จผํธ๋ฅผ ์ค์ ํ๋ฉด์ ํ์ํ๊ธฐ ์ํด 10์ต(1000^3)๋ฒ์ ๋น๊ต ์ฐ์ฐ์ ํด์ผ๋ง ํฉ๋๋ค. ์ฌ์ค ์ด๊ฒ์ ๋๋ฌด ๋น์ผ ์ฐ์ฐ์ด๊ธฐ ๋๋ฌธ์ React๋ ๋ ๊ฐ์ง์ ๊ฐ์ ์ ๊ฐ์ง๊ณ ์๊ฐ ๋ณต์ก๋ O(n)์ ์๋ก์ด ํด๋ฆฌ์คํฑ ์๊ณ ๋ฆฌ์ฆ(Heuristic A..