๋ชฉ๋ก๐Ÿ’ป Development/React (19)

roqkf

[React] Update Version 18

๐ŸŒž Intro React๋Š” ํ˜„์žฌ๋„ ๊ณ„์†ํ•ด์„œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๊ณ  ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ์ด๋ฒˆ์— React๊ฐ€ ๋ฒ„์ „ 18๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๋ฉด์„œ ๋งŽ์€ ๋ถ€๋ถ„์ด ๋ฐ”๋€Œ์—ˆ๋Š”๋ฐ, ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ณ€ํ™”๋Š” ์ฝ˜์†” ์ฐฝ์— ์ด์ „์— ๋ณด์ด์ง€ ์•Š๋˜ ๊ฒฝ๊ณ ๋ฌธ์ด ๋ณด์ธ๋‹ค ๊ฒƒ์ด๋‹ค. [๊ทธ๋ฆผ] React 18๋กœ ์—…๋ฐ์ดํŠธ ๋œ ๋’ค ๋ณด์ด๊ฒŒ ๋œ ๊ฒฝ๊ณ ๋ฌธ ํ•ด๋‹น ๊ฒฝ๊ณ ๋ฌธ์€ ์ด์ œ React 18 ๋ฒ„์ „์€ ๋”์ด์ƒ ReactDOM.render๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋‚ด์šฉ์ด๋‹ค. ๋ฌผ๋ก  ๋ฒ„์ „์ด 18๋ณด๋‹ค ๋‚ฎ์€ ์•ฑ์—์„œ๋Š” ํ•ด๋‹น ๊ฒฝ๊ณ ๋ฌธ์€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ณ„์†ํ•ด์„œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๊ณ  ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ˆ๋งŒํผ ํ•ด๋‹น ์ด์Šˆ๋Š” ์•Œ์•„๋‘ฌ์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ์–ธ์ œ๊นŒ์ง€ 18 ๋ฒ„์ „ ์ดํ•˜๋งŒ ์‚ฌ์šฉํ•  ์ผ์€ ์—†์„ ๊ฒƒ์ด๊ณ , 18 ๋ฒ„์ „์„ ์“ฐ๋Š”๋ฐ๋„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ด์ „์˜ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค..

๐Ÿ’ป Development/React 2023. 3. 1. 16:32
[React] Custom Hooks

๐Ÿ“Œ Custom Hooks ๊ฐœ๋ฐœ์ž๊ฐ€ ์Šค์Šค๋กœ ์ปค์Šคํ…€ํ•œ ํ›…์„ ์˜๋ฏธ ์ด๋ฅผ ์ด์šฉํ•ด ๋ฐ˜๋ณต๋˜๋Š” ๋กœ์ง์„ ํ•จ์ˆ˜๋กœ ๋ฝ‘์•„๋‚ด์–ด ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๋Ÿฌ url์„ fetchํ•  ๋•Œ, ์—ฌ๋Ÿฌ input์— ์˜ํ•œ ์ƒํƒœ ๋ณ€๊ฒฝ ๋“ฑ ๋ฐ˜๋ณต๋˜๋Š” ๋กœ์ง์„ ๋™์ผํ•œ ํ•จ์ˆ˜์—์„œ ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ปค์Šคํ…€ ํ›…์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ์ƒํƒœ๊ด€๋ฆฌ ๋กœ์ง์˜ ์žฌํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋ณด๋‹ค ์ ์€ ์–‘์˜ ์ฝ”๋“œ๋กœ ๋™์ผํ•œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•จ์ˆ˜ํ˜•์œผ๋กœ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด๋‹ค ๋ช…๋ฃŒํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. (e.g. useSomething) //FriendStatus : ์นœ๊ตฌ๊ฐ€ online์ธ์ง€ offline์ธ์ง€ returnํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ function FriendStatus(props) { const [isOnline, setIsOnline] = useSta..

๐Ÿ’ป Development/React 2023. 3. 1. 16:31
[React] Hook | useCallback

๐Ÿ“Œ 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๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ณด์ž. ๊ทธ๋ ‡๋‹ค๋ฉด ํ•จ์ˆ˜ ๋˜ํ•œ ..

๐Ÿ’ป Development/React 2023. 3. 1. 16:31
[React] Hook | useMemo

์ปดํฌ๋„ŒํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง์ด ๋  ๋•Œ๋งˆ๋‹ค ๋ฆฌ๋ Œ๋”๋ง์„ ํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋„ˆ๋ฌด ์žฆ์€ ๋ฆฌ๋ Œ๋”๋ง์€ ์•ฑ์— ์ข‹์ง€ ์•Š์€ ์„ฑ๋Šฅ์„ ๋ผ์นœ๋‹ค. [๊ทธ๋ฆผ] ๋„ˆ๋ฌด ๋งŽ์€ ๋ Œ๋”๋ง์€ ์•ฑ์— ์•ˆ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ฏธ์น˜๋Š” ๊ทน๋‹จ์ ์ธ ์˜ˆ ๋ Œ๋”๋ง ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ Hook๋„ ์กด์žฌํ•˜๋Š”๋ฐ, useCallback๊ณผ useMemo๊ฐ€ ๋ฐ”๋กœ ๊ทธ ์—ญํ• ์„ ํ•˜๋Š” Hook์ด๋‹ค. ๐Ÿ“Œ useMemo๋ž€? ํŠน์ • ๊ฐ’(value)๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” Hook function Calculator({value}){ const result = calculate(value); return {result} ; }ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋Š” props๋กœ ๋„˜์–ด์˜จ value๊ฐ’์„ calculate๋ผ๋Š” ํ•จ์ˆ˜์— ์ธ์ž๋กœ ๋„˜๊ฒจ์„œ result ๊ฐ’์„ ๊ตฌํ•œ ํ›„..

๐Ÿ’ป Development/React 2023. 3. 1. 16:30
[React] React Diffing Algorithm

๐Ÿ“Œ React Diffing Algorithm React๊ฐ€ ๊ธฐ์กด ๊ฐ€์ƒ DOM๊ณผ ๋ณ€๊ฒฝ๋œ ์ƒˆ๋กœ์šด ๊ฐ€์ƒ DOM์„ ๋น„๊ตํ•  ๋•Œ, React ์ž…์žฅ์—์„œ๋Š” ๋ณ€๊ฒฝ๋œ ์ƒˆ๋กœ์šด ๊ฐ€์ƒ DOM ํŠธ๋ฆฌ์— ๋ถ€ํ•ฉํ•˜๋„๋ก ๊ธฐ์กด์˜ UI๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ผ ํ•„์š”๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ ํ•˜๋‚˜์˜ ํŠธ๋ฆฌ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋ฆฌ๋กœ ๋ณ€ํ˜•์„ ์‹œํ‚ค๋Š” ๊ฐ€์žฅ ์ž‘์€ ์กฐ์ž‘ ๋ฐฉ์‹์„ ์•Œ์•„๋‚ด์•ผ๋งŒ ํ–ˆ๋Š”๋ฐ, ์•Œ์•„๋‚ธ ์กฐ์ž‘ ๋ฐฉ์‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ O(n^3)์˜ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ทธ๋Œ€๋กœ React์— ์ ์šฉํ•œ๋‹ค๋ฉด 1000๊ฐœ์˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์‹ค์ œ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด 10์–ต(1000^3)๋ฒˆ์˜ ๋น„๊ต ์—ฐ์‚ฐ์„ ํ•ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ด๊ฒƒ์€ ๋„ˆ๋ฌด ๋น„์‹ผ ์—ฐ์‚ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— React๋Š” ๋‘ ๊ฐ€์ง€์˜ ๊ฐ€์ •์„ ๊ฐ€์ง€๊ณ  ์‹œ๊ฐ„ ๋ณต์žก๋„ O(n)์˜ ์ƒˆ๋กœ์šด ํœด๋ฆฌ์Šคํ‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Heuristic A..

๐Ÿ’ป Development/React 2023. 3. 1. 16:28