Transparent White Star

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/React

์ด๋ฒˆ ์žฅ์—์„œ๋Š”State์™€ Props์˜ ๊ฐœ๋…๊ณผ ์ฐจ์ด์ ์„ ์ž์„ธํžˆ ๋‹ค๋ค„๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.์—ฌ๋Ÿฌ๋ถ„์€ React์˜ state์— ์–ผ๋งŒํผ ์•Œ๊ณ  ๊ณ„์‹ ๊ฐ€์š” ? ๋‘˜์˜ ์ฐจ์ด๋Š” ๋ญ˜๊นŒ์š” ? ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋ณด์ž๋ฉด,state ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ์ดํ„ฐ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๋™์ ์ธ ๋ฐ์ดํ„ฐ๋กœ, ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ฃผ๋กœ UI์˜ ๋™์ž‘์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.props ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌ๋˜๋Š” ์ฝ๊ธฐ ์ „์šฉ ๋ฐ์ดํ„ฐ๋กœ, ์ฃผ๋กœ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ์žˆ๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ state๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด.์ด๋ฅผ ์œ„ํ•ด์„œ ํŽ˜์ด์ง€์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ๋งˆ๋‹ค DOM์— ์ ‘๊ทผํ•˜์—ฌ ์ง์ ‘ ์ˆ˜์ •ํ•ด ์ฃผ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋œ ๋งŒํผ ๋‹น์—ฐํžˆ ํ™”๋ฉด๋„ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋‹ˆ๊นŒ์š” ์—ฌ๊ธฐ์„œ ์ž ..
๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ฒ˜์Œ์œผ๋กœ Jotai๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์•˜๊ณ , ๊ทธ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ Jotai์˜ ์žฅ์ ๊ณผ ๋‹จ์ ์„ Context์™€ Zutand๋ฅผ ๋น„๊ตํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. Jotai ์‚ฌ์šฉ ํ›„ Context์™€ Zustand์™€์˜ ๋น„๊ต ๐Ÿ’ซ ๐Ÿ“Œ Jotai ์‚ฌ์šฉ ์˜ˆ์ œimport React from 'react';import { atom, useAtom } from 'jotai';// atom ์ •์˜const countAtom = atom(0);function Counter() { const [count, setCount] = useAtom(countAtom); return ( ์นด์šดํŠธ: {count} setCount(count + 1)}>์ฆ๊ฐ€ );}export default function ..
1. Styled ComponentsStyled Components๋Š” CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋กœ, ์Šคํƒ€์ผ์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์•ˆ์— ์ž‘์„ฑํ•˜๊ณ , ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ์บก์Аํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.์žฅ์  ๐Ÿ˜„์ž๋™ ์ตœ์ ํ™”: ๋ถˆํ•„์š”ํ•œ ํด๋ž˜์Šค ์ƒ์„ฑ์ด๋‚˜ ์ค‘๋ณต๋œ ์Šคํƒ€์ผ ์ œ๊ฑฐ ๋“ฑ ์ตœ์ ํ™”๊ฐ€ ์ž๋™์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.๋™์  ์Šคํƒ€์ผ๋ง: Prop์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.CSS์˜ ๋ฒ”์œ„: CSS๊ฐ€ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ์บก์Аํ™”๋˜์–ด ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ถฉ๋Œ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.๋‹จ์  ๐Ÿ˜ž๋Ÿฐํƒ€์ž„ ์„ฑ๋Šฅ ์ €ํ•˜: Styled Components๋Š” ์Šคํƒ€์ผ์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Ÿฐํƒ€์ž„ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ ๋งŽ์€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์Šคํƒ€์ผ์„ ๊ณ„์‚ฐํ•˜๊ณ  ์ ์šฉํ•˜๋Š” ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.ํŒจํ‚ค์ง€ ํฌ๊ธฐ ์ฆ๊ฐ€: ์ถ”๊ฐ€์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•ด์•ผ..
๐Ÿšช ๋จผ์ € ์•Œ์•„์•ผํ•  ๊ฐœ๋…์ปดํฌ๋„ŒํŠธ ์–ธ๋งˆ์šดํŠธ๋ž€ ?์ปดํฌ๋„ŒํŠธ ์–ธ๋งˆ์šดํŠธ(Unmount)๋Š” React ์ปดํฌ๋„ŒํŠธ๊ฐ€ DOM์—์„œ ์ œ๊ฑฐ๋˜๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์—์„œ ์‚ฌ๋ผ์ง€๊ฑฐ๋‚˜ ๋” ์ด์ƒ ํ•„์š” ์—†์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ธ๋งˆ์šดํŠธ๋˜๋Š” ๊ฒฝ์šฐ ๐Ÿ’ญ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์„ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ˆจ๊ฒจ์ง€๊ฑฐ๋‚˜ ์ œ๊ฑฐ๋  ๋•Œ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ธ๋งˆ์šดํŠธ๋  ๋•Œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์™€ ํด๋ฆฐ์—…์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ํŠน์ • ์ด๋ฒคํŠธ(์˜ˆ: ํด๋ฆญ, ๋ฆฌ์‚ฌ์ด์ฆˆ, ์ž…๋ ฅ ๋“ฑ)๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, window.addEventListener('resize', handleResize)๋Š” ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์˜ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋  ๋•Œ๋งˆ๋‹ค handleResize ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์™œ ํด๋ฆฐ์—…์ด ํ•„์š”ํ•œ๊ฐ€?์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ธ๋งˆ์šดํŠธ..
์ฒซ ๋ฒˆ์งธ ์ฝ”๋“œReact 18import React from 'react';import ReactDOM from 'react-dom/client';const root = ReactDOM.createRoot(document.getElementById('root'));root.render(์•ˆ๋…• ๋ฆฌ์•กํŠธ !); React 18 ์ด์ƒ: React 18์—์„œ๋Š” ์ƒˆ๋กœ์šด Root API์ธ ReactDOM.createRoot๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.Concurrent Mode ์ง€์›: ์ด ์ƒˆ๋กœ์šด API๋Š” React์˜ Concurrent Mode์™€ ๋” ๋‚˜์€ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.์‚ฌ์šฉ๋ฒ•createRoot๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ root๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.์ƒ์„ฑ๋œ root์—์„œ render ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ฝ”๋“œReact 17import Reac..
yyezzzy
'๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก