React 6

FSD ์•„ํ‚คํ…์ฒ˜

https://dev.to/m_midas/feature-sliced-design-the-best-frontend-architecture-4noj Feature-Sliced Design: The Best Frontend ArchitectureIntroduction Frontend developers often face a problem related to application architecture....dev.to ์†Œ๊ฐœํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค์€ ์ข…์ข… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ์— ์ง๋ฉดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ์†์‰ฝ๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋“ˆ๊ฐ„ ๋А์Šจํ•œ ๊ฒฐํ•ฉ๊ณผ ๋†’์€ ์‘์ง‘๋„๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ณ๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.์ด ๊ธ€์—์„œ๋Š” Feature-Sliced Design(FSD) ์•„ํ‚คํ…์ณ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค. F..

React 2025.04.27

Context

Context : ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํŠธ๋ฆฌ ์•„๋ž˜์— ์žˆ๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์— ๊นŠ์ด์— ์ƒ๊ด€์—†์ด ์ •๋ณด๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ props๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.  Context๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ผ๊นŒ์š”? Context๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” 'Props Drilling' ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค. Props Drilling ๋ฌธ์ œ๋Š” ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ๊ฐ’์„ ์ „๋‹ฌํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Props๋Š” ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ์—์„œ ์–ธ์ œ๋‚˜ ๋ถ€๋ชจ์—์„œ ์ž์‹์œผ๋กœ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ์—์„œ๋Š” ์ž์‹์˜ ์ž์‹, ์ฆ‰ ํŠธ๋ฆฌ์—์„œ 2๋‹จ๊ณ„ ์ด์ƒ ๋–จ์–ด์ ธ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ์— ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด Props๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ Props๋ฅผ ํŠธ๋ฆฌ๋ฅผ ํ†ตํ•ด ๊นŠ์ด ์ „๋‹ฌํ•ด์ค˜์•ผ..

React 2024.11.21

forwardRef

forwardRef : ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž๋…€ ์ปดํฌ๋„ŒํŠธ๋กœ ref๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ• ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž๋…€ ์ปดํฌ๋„ŒํŠธ์˜ DOM ์š”์†Œ์— ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. // App.jsimport React, { useRef } from "react";function App() { const inputRef = useRef(); const focus = () => { inputRef.current.focus(); }; return ( ํฌ์ปค์Šค );}export default App;์œ„์˜ ์ฝ”๋“œ๋Š” ref๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜๊ณ , ๋งŒ๋“  ref๋ฅผ input ํƒœ๊ทธ ์•ˆ์— ref ์†์„ฑ์œผ๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ref๋Š” input์˜ ๋” ๋…ธ๋“œ๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ๋ฒ„ํŠผ์ด ํด๋ฆญ๋  ๋•Œ๋งˆ๋‹ค f..

React 2024.11.14

JSX๋กœ ๋งˆํฌ์—… ์ž‘์„ฑ / ์Šคํƒ€์ผ ์ถ”๊ฐ€

JSX ( JavaScript XML ) : JavaScript ๋ฌธ๋ฒ• ํ™•์žฅ์ž JavaScript ๋‚ด์—์„œ HTML๊ณผ ์œ ์‚ฌํ•œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” React์˜ ํ™•์žฅ ๋ฌธ๋ฒ•์ด๋‹ค.JSX๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง์ ‘ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. JSX๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ React ํ”„๋กœ์ ํŠธ๋Š” ํŽธ์˜์„ฑ์„ ์œ„ํ•ด JSX๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.๋กœ์ปฌ ๊ฐœ๋ฐœ์— ๊ถŒ์žฅํ•˜๋Š” ๋ชจ๋“  ๋„๊ตฌ๋Š” JSX๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์ง€์›ํ•œ๋‹ค. JSX๋Š” HTML๋ณด๋‹ค ์—„๊ฒฉํ•˜๋‹ค. ๊ฐ™์€ ํƒœ๊ทธ๋ฅผ ๋ฐ˜๋“œ์‹œ ๋‹ซ์•„์•ผ ํ•œ๋‹ค. ๋˜ํ•œ, ์ปดํฌ๋„ŒํŠธ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ JSX ํƒœ๊ทธ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์—†๋‹ค. ๋ฐ˜๋“œ์‹œ ... ๋‚˜ ๋นˆ ... wrapper ๊ฐ™์€ ๊ณตํ†ต๋œ ๋ถ€๋ชจ ์š”์†Œ๋กœ ๊ฐ์‹ธ์•ผ ํ•œ๋‹ค. function AboutPage() { return ( About Hell..

React 2024.07.25

์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ๋ฐ ์ค‘์ฒฉ

๋ฆฌ์•กํŠธ ์•ฑ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.์ปดํฌ๋„ŒํŠธ๋ž€ UI ( ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ) ์˜ ํ•œ ๋ถ€๋ถ„์œผ๋กœ, ์ž์ฒด์ ์ธ ๋กœ์ง๊ณผ ์™ธ๊ด€์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.์ปดํฌ๋„ŒํŠธ๋Š” ๋ฒ„ํŠผ์ฒ˜๋Ÿผ ์ž‘์„ ์ˆ˜๋„ ์žˆ๊ณ , ์ „์ฒด ํŽ˜์ด์ง€์ฒ˜๋Ÿผ ํฌ๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๋Š” ๋งˆํฌ์—…์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜์ด๋‹ค. function MyButton() { return ( I'm a button );} MyButton์„ ์„ ์–ธํ–ˆ์œผ๋ฏ€๋กœ, ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ ์•ˆ์— ์ค‘์ฒฉ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.export default function MyApp() { return ( Welcome to my app );}  ์ด ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ์ฃผ๋ชฉํ•ด๋ณด์ž. ์ด๊ฒƒ์ด ๋ฆฌ์•กํŠธ ์ปดํฌ๋„Œ..

React 2024.07.23

React ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ• ๋ฐ ์‹คํ–‰

React : The library for web and native user interfaces ๋ฆฌ์•กํŠธ๋Š” ์›น๊ณผ ๋„ค์ดํ‹ฐ๋ธŒ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.  ์ฃผ์š” ํŠน์ง•์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ณ : ๋ฆฌ์•กํŠธ์—์„œ๋Š” UI๋ฅผ ๋…๋ฆฝ์ ์ด๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค๋กœ ๋‚˜๋ˆˆ๋‹ค. ๊ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ์ž์‹ ์˜ ์ƒํƒœ์™€ ๋กœ์ง์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๋‹ค.Virtual DOM : ๋ฆฌ์•กํŠธ๋Š” ์‹ค์ œ DOM ์กฐ์ž‘์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒ DOM ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฆฌ์•กํŠธ๋Š” ๊ฐ€์ƒ DOM์—์„œ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์‹ค์ œ DOM์— ์ ์šฉํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋œ๋‹ค.๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„ : ๋ฐ์ดํ„ฐ๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ํ๋ฅธ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ์ถ”์ ๊ณผ ๋””๋ฒ„๊น…์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ค€๋‹ค.JSX :..

React 2024.07.13