๋ชฉ๋กDEV_IN/React (11)

let's get IT with DAVINA ๐Ÿ’ป

React Query

โœ๏ธ ์‚ฌ์ „ Knowledge ++ FE ์ƒํƒœ ๊ด€๋ฆฌ redux, mobx, recoil ๋“ฑ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์กด์žฌ ์ƒํƒœ๋ž€? ์ฃผ์–ด์ง„ ์‹œ๊ฐ„์— ๋Œ€ํ•ด ์‹œ์Šคํ…œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ์–ธ์ œ๋“ ์ง€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ. ์ฆ‰, ๋ฌธ์ž์—ด, ๋ฐฐ์—ด, ๊ฐ์ฒด ๋“ฑ์˜ ํ˜•ํƒœ๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ → ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค ์ƒํƒœ๊ด€๋ฆฌ? ์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ผ ๋ณ€ํ™”ํ•˜๋Š” ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ React์—์„  ๋‹จ๋ฐฉํ–ฅ ๋ฐ”์ธ๋”ฉ์ด๋ฏ€๋กœ props drilling ์ด์Šˆ๋„ ์กด์žฌ (redux, mobx์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๊ฒฐํ•˜๊ธฐ๋„ ํ•จ) store์€ ์ „์—ญ์ƒํƒœ๊ฐ€ ์ €์žฅ๋˜๊ณ  ๊ด€๋ฆฌ๋˜๋Š” ๊ณต๊ฐ„์ธ๋ฐ redux, redux-saga๋ฐฉ์‹์œผ๋กœ ๋น„๋™๊ธฐ ์š”์ฒญ์„ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋ฉด redux ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ๋“ˆ์— APIํ†ต์‹  ๊ด€๋ จ ์ฝ”๋“œ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๊ฒŒ ๋จ ๋น„์Šทํ•œ ๊ตฌ์กฐ์˜ API ํ†ต..

DEV_IN/React 2023. 3. 24. 22:22
React๋กœ TodoApp ๋งŒ๋“ค๊ธฐ (1)Setup

๋ถ€ํŠธ์บ ํ”„๊ฐ€ ๋๋‚˜๊ณ  ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋” ์‹ฌํ™”๋˜๊ณ , ์ƒˆ๋กœ์šด ์–ธ์–ด ๊ธฐ๋ฐ˜์œผ๋กœ, ๋” ์–ด๋ ค์šด ์ˆ˜์ค€์˜ ์ถ”๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ๋“ฏ ํ•˜์—ฌ ๋Œ€๋‹จํ•ด๋ณด์ธ๋‹ค.. ๋ฌผ๋ก  ์ฝ”๋”ฉ์ด๋ž€๊ฑธ ์ฒ˜์Œ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ "๋‚˜"๋ณด๋‹ค๋Š” ํ˜„์žฌ์˜ "๋‚ด"๊ฐ€ ๋” ๋ฐœ์ „ํ•ด์žˆ๋Š” ๋ชจ์Šต์ด๊ณ , ๋ถˆ์•ˆํ•ดํ•˜์ง€ ๋ง์ž๊ณ  ๋งค์ผ ๋‹ค์งํ•˜์ง€๋งŒ ๋‚œ ๋‚ด๊ฐ€ ๊ธฐ๋ณธ๊ธฐ๊ฐ€ ์—ฌ์ „ํžˆ ๋งŽ์ด ๋ถ€์กฑํ•˜๊ตฌ๋‚˜๋ฅผ ๊ณ„์† ๊นจ๋‹ฌ์œผ๋ฉฐ ๋งŽ์ด ์ขŒ์ ˆํ•˜๋Š” ์š”์ฆ˜์ธ๊ฒƒ๊ฐ™๋‹ค.. ๊ทธ ์–ด๋–ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์“ฐ๊ฑด ํ•˜๋‚˜์˜ ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ, CRUD๋ฅผ ์ •๋ง ์™„๋ฒฝํ•˜๊ฒŒ ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€๋ฅผ ์Šค์Šค๋กœ์—๊ฒŒ ๋ฌผ์–ด๋ณธ๋‹ค๋ฉด ๋„ˆ๋ฌด๋‚˜๋„ ๋‹น์—ฐํžˆ NO์˜€๋‹ค.. ๊ทธ๋ž˜์„œ ๋‚œ ๋” ์–ด๋ ต๊ธฐ๋ณด๋‹จ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋‹ฆ๊ณ ์ž ํ”„๋กœ์ ํŠธ ์ „ ๋ถ€ํŠธ์บ ํ”„์—์„œ ๊ณผ์ œ๋กœ ์คฌ๋˜ (๋‚œ ์‹คํŒจํ–ˆ๋˜) Todo App์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋งŒ๋“ค์–ด๋ณด๊ณ ์ž ์‹œ์ž‘ํ–ˆ๋‹ค. 1. React Component ๋งŒ๋“ค..

DEV_IN/React 2023. 3. 2. 21:14
JSX

About JSX React์—์„œ UI๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ๋ฒ•์œผ๋กœ, JavaScript๋ฅผ ํ™•์žฅํ•œ ๋ฌธ๋ฒ• (JavaScript XML) ⇒ ์ด ๋ฌธ๋ฒ•์„ ์ด์šฉํ•ด์„œ React ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ HTML์š”์†Œ๋ฅผ ๋งŒ๋“ค๊ณ , JS๋ฅผ ์„ค์ •ํ•œ ๋’ค, ๋‹ค์‹œ HTML์— ํ•ด๋‹น ์„ค์ • ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด, React JSX๋Š” JS๋กœ ์š”์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ๋งˆ์ง€๋ง‰์— HTML์— ์—…๋ฐ์ดํŠธ/๋ฐ˜์˜ํ•ด์ค๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” JS์ฝ”๋“œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. “Bable”์„ ํ†ตํ•ด JSX๋ฅผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” JS๋กœ ์ปดํŒŒ์ผ ํ›„, JS๋ฅผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฝ๊ณ  ํ™”๋ฉด์— ๋ Œ๋”๋ง ํ•ฉ๋‹ˆ๋‹ค. DOM ๊ทธ๋ฆฌ๊ณ  React JSX CSS&JSX ๋ฌธ๋ฒ•๋งŒ์„ ๊ฐ€์ง€๊ณ  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ปดํฌ๋„ŒํŠธ ํ•˜๋‚˜๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํŒŒ์ผ..

DEV_IN/React 2023. 2. 21. 23:58
What is React?

React๋กœ ๋‘๋ฒˆ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ ์™œ React๋ฅผ ์ผ๋Š”๊ฐ€์™€ ์–ด๋–ค ์žฅ์ ์ด ์žˆ๋Š”์ง€ ์Šค์Šค๋กœ ์งˆ๋ฌธ์— ์ œ๋Œ€๋กœ ๋‹ต๋„ ๋ชปํ•˜๋Š” ๋‚ด ์ž์‹ ์ด ํ•œ์‹ฌํ•ด์„œ ๋งˆ์Œ ๋‹ค์žก๊ณ  ์ •๋ฆฌ๋ฅผ ๋„์ ์—ฌ๋ด…๋‹ˆ๋‹ค๋นˆ..๐Ÿ˜ฅ ํ•ญ์ƒ ์ด๊ฑด "์™œ" ์ƒ๊ฒผ๊ณ , "์™œ" ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์“ฐ๋Š”์ง€ ์ •๋„๋Š” ์•Œ๊ณ  ์“ฐ์ž ๋‹ค๋นˆ์•„ใ…ใ…ใ… plz What is React? React๋Š” ํ”„๋ก ํŠธ์•ค๋“œ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ, ํ”„๋ก ํŠธ์•ค๋“œ ๊ฐœ๋ฐœ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” JavaScript ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ์ˆ ์  ๋ถ„๋ฅ˜์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฅ˜ํ•˜์ง€ ์•Š๊ณ , ๊ธฐ๋Šฅ๋ณ„๋กœ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธธ ๊ถŒ์žฅ ๋ฆฌ์•กํŠธ SPA๋ฅผ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ง„ ํˆด ์ฒด์ธ npx create-react-app@latest ํด๋”์ด๋ฆ„ React์˜ 3๊ฐ€์ง€ ํŠน์ง• ์„ ์–ธํ˜• (Declarative) ๋ฆฌ์•กํŠธ๋Š” ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด HTM..

DEV_IN/React 2023. 2. 21. 23:39
prevent scroll event with MODAL (์Šคํฌ๋กค ๋ฐฉ์ง€-๋ชจ๋‹ฌ์ฐฝ)

์™œ ๊ฐ€? ํ”„๋กœ์ ํŠธ์— ์ ์—ˆ๋˜ ์Šคํฌ๋กค๋ง ๋ฐฉ์ง€์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ฒ€์ƒ‰๊ณผ ์ง€์ธ์—๊ฒŒ ๋ฌผ์–ด๋ณธ ๊ฒฐ๊ณผ.. ์ข€ ๋” ํšจ์œจ์ ์ด๊ณ  ์ง€์ €๋ถ„ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ๋ฅผ ์•Œ์•„๋ƒˆ๋‹ค. ๋ชจ๋‹ฌ์ฐฝ์„ ๋„์› ์„ ๋•Œ, ์Šคํฌ๋กค ๋ฐฉ์ง€๋ฅผ ํ•˜๊ณ  -> ๋ชจ๋‹ฌ์ฐฝ์„ ๋‹ซ์œผ๋ฉด ๋‹ค์‹œ ์Šคํฌ๋กค ํ™œ์„ฑํ™”๋ฅผ ์‹œํ‚ค๋ ค๋ฉด overflow:hidden ์†์„ฑ์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค! modal์ฐฝ์˜ ์ƒํƒœ๋ฅผ useState๋กœ ์ƒํƒœ๊ฐ’์„ ์ง€์ผœ๋ณด๊ณ  ๋ชจ๋‹ฌ์ฐฝ์ด ๋œจ๋ฉด, scroll ์ƒํƒœ๋ฅผ hidden์œผ๋กœ ๋น„ํ™œ์„ฑํ™”์‹œํ‚ค๊ณ  ๋ชจ๋‹ฌ์ฐฝ์„ ๋‹ซ์œผ๋ฉด, hidden์„ ๋‹ค์‹œ ํ’€์–ด์ฃผ๋Š” unset์†์„ฑ์„ ์ค˜์„œ ์Šคํฌ๋กค์„ ๋‹ค์‹œ ํ™œ์„ฑํ™”์‹œํ‚จ๋‹ค. const [modal, setModal] = useState(false); const handleModal = () => { if (modal === false) { setModal(true); documen..

DEV_IN/React 2023. 2. 17. 20:12