728x90
๋ฐ˜์‘ํ˜•

Front-End/React 19

React] Strict Mode

Strict Mode productionํ™˜๊ฒฝ์—์„œ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ React์—์„œ ์žก์•„์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Strict Mode๊ฐ€ ์ผœ์ ธ ์žˆ๋Š” ์ƒํƒœ์ด๋ฉด, ๊ฐœ๋ฐœ ์ค‘์— React๋Š” ์‹ค์ œ ์„ค์ • ์ „์—(setup - cleadnup) ํ•œ ๋ฒˆ ๋” ์‹คํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•จ์ด๋ฉฐ, ๋‘๋ฒˆ ์ผ์–ด๋‚ฌ๋Š”๋ฐ, ๊ฒฐ๊ด๊ฐ’์ด ์„œ๋กœ ๋‹ค๋ฅด๋ฉด ํ•ด๋‹น ์ฝ”๋“œ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ๋งŒ ํ™œ์„ฑํ™” ๋˜๊ธฐ ๋•Œ๋ฌธ์— production์—์„œ๋Š” ์˜ํ–ฅ์ด ์—†์Œ CRA๋กœ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์‹œ default๋กœ ํƒœ๊ทธ๊ฐ€ ๋‹ฌ๋ ค ์žˆ์Œ import React from 'react'; function ExampleApplication() { return ( ); } React.StrictMode๋กœ ๊ฐ์Œ€ ์ˆ˜ ์žˆ๋‹ค. ํ˜น..

Front-End/React 2023.06.20

React] Mount & Rerender (LifeSycle)

React๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ, ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€๋Š” ๋™์ž‘ ์ˆœ์„œ์™€ ํ™”๋ฉด์„ ๋‹ค์‹œ ๊ทธ๋ฆฌ๊ฒŒ ๋˜๋Š” ๋ฆฌ๋ Œ๋”๋ง ์ˆœ์„œ์ž…๋‹ˆ๋‹ค. Mount (๋งˆ์šดํŠธ) ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ๋ Œ๋”๋ง ๋˜๋Š” ๊ณผ์ •์„ ๋งˆ์šดํŠธ๋ผ๊ณ  ํ•˜๋ฉฐ, ๋ Œ๋”๋ง ๋œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‚ญ์ œ๋˜๋Š” ๊ณผ์ •์„ Unmount(์–ธ๋งˆ์šดํŠธ)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ํ˜ธ์ถœ ๊ตฌํ˜„๋ถ€ ์‹คํ–‰ props ์ „๋‹ฌ๋ฐ›๊ณ , hook ๋‚ด๋ถ€ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ์ƒ์„ฑ. (๋‚ด๋ถ€ ๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜๋Š” hook์— ์žˆ๋Š” state๋‚˜ function์„ ์ œ์™ธ. ์ด๋“ค์€ ๋ณ„๋„๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด ๊ด€๋ฆฌํ•จ.) ๊ฐ€์ƒ DOM์„ ์ƒ์„ฑ ์ปค๋ฐ‹ ์‹ค์ œ DOM์— ๋ฐ˜์˜ useLayoutEffect ํ™”๋ฉด์— Paint ํ•˜๊ธฐ ์ „์—, useLayoutEffect์— ๋“ฑ๋กํ•ด ๋‘” effect '๋™๊ธฐ'๋กœ ์‹คํ–‰๋œ๋‹ค. ์‹ค์ œ๋กœ ํ•ด๋‹น ํ›…์€ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Œ. ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ™•..

Front-End/React 2023.06.20

React] Hook : useEffect

useEffect Side-Effect๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Hook์ž…๋‹ˆ๋‹ค. Side-Effect : ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ํ•จ์ˆ˜ ์™ธ๋ถ€์— ์กด์žฌํ•˜๋Š” ๊ฐ’์ด๋‚˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ค๋Š” ๋“ฑ์˜ ํ–‰์œ„๋กœ, ๋ Œ๋”๋ง ๋œ ์ดํ›„ ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” ๋ถ€์ˆ˜์ ์ธ ๊ฒƒ๋“ค์„ ์ง€์นญ uesEffect(() ⇒ { … } ,[deps]) ๋‘ ๋ฒˆ์งธ ์ธ์ž์ธ deps์— state๊ฐ’์„ ๋„ฃ๊ณ , state๊ฐ’์ด ๋ณ€ํ•  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น useEffect๋ฅผ ์‹คํ–‰. ๋นˆ ๋ฐฐ์—ด๋กœ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ, ๋ Œ๋”๋ง ํ›„ 1๋ฒˆ๋งŒ ์‹คํ–‰. ์ข…์†์„ฑ ๋ฐฐ์—ด์„ ์•„์˜ˆ ์ง€์ •ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ, ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰. useEffect๊ฐ€ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์€ ๋ Œ๋”๋ง ๊ฒฐ๊ณผ๊ฐ€ DOM์— ๋ฐ˜์˜๋  ๋•Œ, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‚ฌ๋ผ์ง€๊ธฐ ์ง์ „ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. 2023.06.20 - [Front-End/React] - React ๋™์ž‘..

Front-End/React 2023.06.20

React] Hook

Hook React์—์„œ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉ ์‹œ, state์™€ ๋‹ค๋ฅธ React ๊ธฐ๋Šฅ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์คŒ. ์ฃผ์˜ ์‚ฌํ•ญ Hook์€ ์ตœ์ƒ์œ„, ํ•จ์ˆ˜์˜ ์ œ์ผ ๋ฐ”๋‹ฅ์—์„œ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋ฐ˜๋ชฉ๋ฌธ, ์กฐ๊ฑด๋ฌธ, Hook ๋‚ด๋ถ€ ๋“ฑ์—์„œ ํ˜ธ์ถœํ•˜๋ฉด ์•ˆ ๋œ๋‹ค. Hook์€ React ํ•จ์ˆ˜ ๋‚ด์—์„œ ์‚ฌ์šฉ Custom Hook์—์„œ Hook์„ ํ˜ธ์ถœํ•  ๊ฒƒ Hook์€ ํ˜ธ์ถœ๋˜๋Š” ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. React์—์„œ ์ œ๊ณตํ•ด ์ฃผ๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋“ค? ํ•จ์ˆ˜๋“ค?๋กœ ๋ณด๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Front-End/React 2023.06.20

React] Hook : useState

useState Component๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒํƒœ๊ฐ’์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ์˜ ๋™์  ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ํ”ํžˆ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด๋˜์ง€๋งŒ, ์•„๋ž˜์™€๊ฐ™์€ ํŠน์ง•์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜๋ž‘์€ ๋Š๋‚Œ๋งŒ ๊ฐ™์ง€ ๋งŽ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. const [๋ณ€์ˆ˜์ด๋ฆ„, set๋ณ€์ˆ˜์ด๋ฆ„] = useState(์ดˆ๊ธฐ๊ฐ’); set๋ณ€์ˆ˜์ด๋ฆ„์€ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๋„ฃ์–ด๋„ ๋˜๊ณ , ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ง์ ‘ ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, set์„ ํ†ตํ•ด ๊ฐ’์„ ๋Œ€์ž…ํ•ด์ค๋‹ˆ๋‹ค. state๊ฐ’์ด ๋ณ€ํ•˜๊ฒŒ ๋˜๋ฉด UI๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง ๋œ๋‹ค. useState๋Š” ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•œ๋‹ค. ์˜ˆ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค inputํƒœ๊ทธ์˜ ๊ฐ’์„ ์ž…๋ ฅํ•ด ์ฃผ๋ฉด์„œ content๋ผ๋Š” state๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ž‘์„ฑํ•˜์˜€๋‹ค. content์„ ์–ธํ•  ๋•Œ๋Š” "" ๋นˆ๋ฌธ์ž์—ด๋กœ ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•ด..

Front-End/React 2023.06.06

React] Hook : props

Props properties์˜ ์ค„์ž„๋ง๋กœ, Component๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†์„ฑ๊ฐ’์ž…๋‹ˆ๋‹ค. (HTML์—์„œ์˜ attribute์™€ ๊ฐ™์Œ) Component๋ผ๋ฆฌ (๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ → ์ž์‹ ์ปดํฌ๋„ŒํŠธ) ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋ถ€๋ชจ์—์„œ๋งŒ props์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ž์‹์—์„œ ๊ฐ’์„ ๋ถ€๋ชจ๋กœ ๋„˜๊ฒจ ๋ถ€๋ชจ์—์„œ์˜ ๊ฐ’๋„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค ๊ฐ’ ์ „๋‹ฌ Title ์ปดํฌ๋„ŒํŠธ HelloWorld์—์„œ language๋ฅผ kor๋กœ ํ•˜์—ฌ Title์ปดํฌ๋„ŒํŠธ์— props๋กœ ๋„˜๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Title2 ์ปดํฌ๋„ŒํŠธ HelloWorld์—์„œ language์™€ name ๋‘ ๊ฐ€์ง€ props๋ฅผ ์ „๋‹ฌํ•˜์˜€๊ณ , Title2์—์„œ๋Š” ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น์œผ๋กœ language(๋ณ€์ˆ˜), name(์ฝœ๋ฐฑํ•จ์ˆ˜) ๊ฐ’..

Front-End/React 2023.06.06

React] Import & export

Import Reactํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชจ๋“ˆ์„ ํ•„์š”ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์ปดํฌ๋„ŒํŠธ, css ๋“ฑ ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. import ์‹๋ณ„์ž(๋ณ€์ˆ˜, ํ•จ์ˆ˜, ํด๋ž˜์Šค) from ๊ฒฝ๋กœ(ex ”./Page”) import React from "react"; import Page003, { Page001, Page002, ErrorPage } from "./MultiPage"; export default function App() { return ( ); } export ๊ฐœ๋ฐœํ•œ ๋ชจ๋“ˆ์„ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ๋ชจ๋“ˆ์—์„œ export ํ•ด์•ผ ๋‹ค๋ฅธ ๊ณณ์—์„œ import ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. export ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉฐ, ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ์ปจ๋ฒค์…˜ ์ง„ํ–‰ํ•  ๋•Œ..

Front-End/React 2023.06.06

React] Component & JSX

Component ํ™”๋ฉด ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ๋•Œ, ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ํ•œ ๋ฒˆ์— ๊ทธ๋ฆฌ๊ฒŒ ๋˜๋ฉด, ํ•˜๋‚˜์˜ ์†Œ์ŠคํŒŒ์ผ์— ๋งŽ์€ ์–‘์˜ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด UI๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์†Œ์Šค๋ฅผ ์—ฌ๋Ÿฌ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ ์„œ ์ž‘์„ฑํ•˜์—ฌ ๊ฐ€์ ธ๋‹ค ์“ฐ๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ฅผ Component(์ปดํฌ๋„ŒํŠธ)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Component๋ฅผ ๋‚˜๋ˆ„๋Š” ๋ฒ”์œ„๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ, ๋ฒ„ํŠผํ•˜๋‚˜๊นŒ์ง€๋„ ๋‚˜๋ˆ ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์˜ ๋Šฅ๋ ฅ์ด๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋‚˜๋ˆˆ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Component๋ฅผ ๋ชจ์•„ ํ•œ ๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. React์—์„œ ์ œ๊ณตํ•˜๋Š” Component ๋ฐฉ์‹์ดClass Component์™€ Function Component 2๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ์ง€๋งŒ, ์ฃผ๋กœ Function Component๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, Class Compon..

Front-End/React 2023.06.04

React] React ๋ž€...?

React ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. (์ตœ๊ทผ์—๋Š” ์ฃผ๋กœ TypeScript๋กœ ๊ตฌํ˜„) Web์—๋งŒ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ๋ชจ๋ฐ”์ผ์—์„œ๋Š” React Navive, ๊ฐ€์ƒ App์—์„œ๋Š” React 360 ๋“ฑ์ด ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ DOM์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ, ํŠน์ • DOM์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ํ™”๋ฉด์„ ๊ทธ๋ฆผ์œผ๋กœ์จ, ์—…๋ฐ์ดํŠธํ•  ๋•Œ ๋ณต์žกํ•œ ๋กœ์ง ๋“ฑ ๊ณ ๋ฏผํ•  ๊ฒƒ์ด ์‚ฌ๋ผ์ง€๊ฒŒ ๋์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ํ™”๋ฉด์€ ์ „๋ถ€ ์ƒˆ๋กœ ๊ทธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๊ต‰์žฅํžˆ ๋Š๋ฆด ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋ฉฐ, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒ DOM (Virual DOM)์„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ DOM ์‹ค์ œ ๋ณด์ด๋Š” DOM์ด ์•„๋‹ˆ๋ผ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์ƒ์œผ๋กœ ์กด์žฌํ•˜๋Š” DOM์œผ๋กœ JS๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ์‹ค์ œ ๋ธŒ๋ผ์šฐ์ €๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค...

Front-End/React 2023.06.04
728x90
๋ฐ˜์‘ํ˜•