728x90
๋ฐ˜์‘ํ˜•

Front-End/React 19

React] Hook : useCallback & useMemo ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ๋ ๊นŒ?

useCallback & useMemo ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ๋ ๊นŒ? ๋‘ ๊ฐœ์˜ hook์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‘ hook์€ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๋˜๋‹ˆ๊น ํ•จ์ˆ˜๋‚˜ ๊ฒฐ๊ณผ๊ฐ’์ด ์žˆ๋Š” ๊ฑฐ์— ์ „๋ถ€ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ??๋ผ๋Š” ์ƒ๊ฐ์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ƒ๊ฐ์— ์„ฑ๋Šฅ ์ข‹์•„์ง€๊ฒ ์ง€ ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ๋˜๋ ค ์„ฑ๋Šฅ์ €ํ•˜๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒ๋ฉด ๊ฒฐ๊ตญ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ํ•˜๋Š”๋ฐ์—๋„ ๊ทธ๋งŒํ•œ ๋น„์šฉ์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์–ธ์ œ ์“ฐ๊ณ , ์–ธ์ œ ์“ฐ๋ฉด์•ˆ์ข‹์€์ง€์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. โŒ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ณต์žกํ•˜์ง€ ์•Š์€ ์—ฐ์‚ฐ์— ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์€ ์˜คํžˆ๋ ค ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค. onClick์ด๋ฒคํŠธ๋กœ setStateํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ ๊ฐ™์ด ๋‹จ์ˆœํ•œ ์ƒํ™ฉ์ด๋ผ๋ฉด, ๋ฆฌ๋ Œ๋”๋ง ๋œ๋‹ค๊ณ  ํ•˜๋”๋ผ๊ณ  ๋‹ค์‹œ ๊ทธ๋ ค์ฃผ๋Š” ํŽธํžˆ ํ›จ์”ฌ ๋‚ซ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. React์—์„œ๋„ ..

Front-End/React 2023.06.29

React] Hook : CustomHook

CustomHook ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ๊ฐ™์€ ๋กœ์ง์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ด ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿด ๋•Œ ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด ์ง์ ‘ hook์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋กœ์ง์ด ๋„ˆ๋ฌด ๊ธธ๊ฑฐ๋‚˜ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์งˆ ๊ฒฝ์šฐ๋„ ์žˆ๊ณ , ๋กœ์ง๊ณผ ํƒœ๊ทธ๋“ค ์‚ฌ์ด์— ๊ตฌ๋ถ„์ด ์ง“๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ด๋„ ์•„์ฃผ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. (ํ•จ์ˆ˜๋ฅผ ์ชผ๊ฐœ์„œ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” hook์„ ์‚ฌ์šฉํ•  ๋ฟ...) ์˜ˆ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค name์ด๋ž‘ email ๋‘ ๊ฐœ์˜ state๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. name์€ ์ง์ ‘ ๋งŒ๋“  useInput์ด๋ผ๋Š” ์ปค์Šคํ…€ํ›…์„ ์‚ฌ์šฉํ•˜์˜€๊ณ , email์€ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋กœ์ง์ƒ ๋‘ ๊ฐœ์˜ ์ฐจ์ด์ ์ด ์—†๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ useInput์ด๋ผ๋Š” ์ปค์Šคํ…€ ํ›…์„ ๋งŒ๋“ค์ง€ ์•Š์•˜๋‹ค๋ฉด, email..

Front-End/React 2023.06.26

React] Fragment <></>

Fragment ํƒœ๊ทธ ์ฒ˜์Œ์— ์ปดํฌ๋„ŒํŠธ๊ด€๋ จํ•ด์„œ ์งง๊ฒŒ ์„ค๋ช…ํ–ˆ๋˜ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค. React์—์„œ ์ œ๊ณตํ•ด ์ฃผ๋Š” ๊ธฐ๋ณธ ์ปดํฌ๋„ŒํŠธ์ด๋ฉฐ, ๋™์ผํ•œ ๋ ˆ๋ฒจ์˜ ํƒœ๊ทธ๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ค˜์•ผ ๋  ๋•Œ, ๊ทธ ์ƒ์œ„๋กœ ๋‹ฌ์•„์ฃผ๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ํ•˜๋‚˜์˜ ํƒœ๊ทธ๊ฐ€ ๋ฐ˜ํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค (์ƒ๊ธด๊ฒŒ ์ด์ƒํ•˜๊ธด ํ•˜์ง€๋งŒ...) ์ „์ฒด๋ฅผ ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ์ค˜์„œ h1, h2, span 2๊ฐœ๊ฐ€ ๋™์ผ ์„ ์ƒ์˜ ๋ ˆ๋ฒจ๋กœ ๊ทธ๋ ค์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜๋ฏธ ์—†๋Š” div๋‚˜ span ๋“ฑ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š” Fragmentํƒœ๊ทธ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์‹ค์ œ HTML ๊ทธ๋ ค์งˆ ๋•Œ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ map ๋Œ๋ฆด ๋•Œ ๋ณด๋ฉด, key๊ฐ’์„ ์ž…๋ ฅํ•ด์•ผ ๋˜๋Š”๋ฐ ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ์œ ์šฉํ•œ ํƒœ๊ทธ...

Front-End/React 2023.06.26

React] Hook : useContext ๋‹จ์  ํ•ด๊ฒฐ

useContext 2023.06.23 - [Front-End/React] - React] Hook : useContext ์•ž ๊ฒŒ์‹œ๊ธ€์—์„œ ์–˜๊ธฐํ–ˆ๋˜ useContext์˜ ๋‹จ์ ์€ ๋ฆฌ๋ Œ๋”๋ง์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค ์•ž์— ์˜ˆ๋ฅผ ๋“ค์—ˆ๋˜ ๋งˆํŠธ ์ฝ”๋“œ์—์„œ๋Š” 2์ธต ๊ณผ์ผ, 3์ธต ์Œ๋ฃŒ์ˆ˜๋กœ ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค/ ๋งŒ์•ฝ addDrink๋ฟ๋งŒ ์•„๋‹ˆ๋ผ addFruit๋ฅผ context์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ , ์ด๋ฅผ Emart2F๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด, addFruit ํ•˜๊ฒŒ ๋  ๋•Œ Emart3F๋„ ๋ฆฌ๋ Œ๋”๋ง ๋˜๋Š” ํ˜„์ƒ์„ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ๋ช‡ ๊ฐ€์ง€ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. Emart.js import React, { useState, use..

Front-End/React 2023.06.26

React] Hook : useContext

useContext ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด props๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๋„˜๊ธธ ๋•Œ๊ฐ€ ์ฐพ์•„์˜ค๊ณค ํ•ฉ๋‹ˆ๋‹ค. ์ฆ์กฐ๋ถ€๋ชจ → ์กฐ๋ถ€๋ชจ → ๋ถ€๋ชจ → ์ž์‹ → ... ์ด๋ ‡๊ฒŒ props๋ฅผ ๊ณ„์† ๋„˜๊ธฐ๋‹ค ๋ณด๋ฉด ์—„์ฒญ๋‚œ ๋…ธ๊ฐ€๋‹ค๋ฅผ ํ•ด์•ผ ๋  ์ˆ˜๋„ ์žˆ๊ณ , ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด, ๊ฐ€๋…์„ฑ ๋“ฑ ์•ˆ ์ข‹์€ ์ ์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ „์—ญ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” Context๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Context๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฆ์กฐ๋ถ€๋ชจ์—์„œ ์ž์‹๊นŒ์ง€ ํ•œ ๋ฒˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์‚ฌ์šฉํ•˜๊ธฐ์— ๋‹ค๋ฅธ hook๋ณด๋‹ค ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) createContext(initialValue) context๊ฐ์ฒด ์ƒ์„ฑ createContextํ˜ธ์ถœ ์‹œ, Provider์™€ Consumer ๋ฐ˜ํ™˜ Context.Provider ์ƒ์„ฑํ•œ context๋ฅผ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌ u..

Front-End/React 2023.06.23

React] Hook : useState ๋น„๋™๊ธฐ → ๋™๊ธฐ ํ•˜๋Š” ๋ฒ•

๋ณธ์ธ์ด ์ž‘์„ฑํ•œ ํ๋ฆ„ ๋”ฐ๋ผ ๊ฐ’์ด ๋ณ€ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๊ณ  setState๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ, ๋ฐ”๋กœ ๋‹ค์Œ์ค„์— ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ข…์ข… ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” useState์„ค๋ช…ํ•  ๋•Œ์ฒ˜๋Ÿผ ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. (๊ด€๋ จ ์„ค๋ช…์€ ์•„๋ž˜ ๊ธ€ ํ™•์ธํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.) 2023.06.04 - [Front-End/React] - React] React ๋ž€...? 2023.06.06 - [Front-End/React] - Hook) useState ๊ทธ๋ ‡๋‹ค๋ฉด useState๋ฅผ ๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ๋ ์ง€ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. useEffect ์‚ฌ์šฉ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค useEffect๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜์กด์„ฑ์„ ๋ถ€์—ฌํ•˜๊ณ , content๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ๊ฐฑ์‹ ํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 2023.06.20..

Front-End/React 2023.06.22

React] Hook : useReducer

useReducer ๋‹จ์ˆœํžˆ state ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, state๋ฅผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•œ ๋กœ์ง, ํ•จ์ˆ˜ ๋“ฑ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿด ๋•Œ useReducer๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ด€๋ฆฌ์— ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด state๋ฅผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋“ค์„ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค. const [state, dispatch] = useReducer(reducer, initialState); ํ•˜๋‚˜์˜ state์— dispatch๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ๋ณ€ํ™˜ํ•ด ์ค๋‹ˆ๋‹ค. (dispatch๊ฐ€ setState์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋  ๋“ฏ์‹ถ์Šต๋‹ˆ๋‹ค.) state : ์ปดํฌ๋„ŒํŠธ์—์„œ์˜ state dispatch: action์„ ๋ฐœ์ƒํ•˜๋Š” ํ•จ์ˆ˜ (setState์™€ ๋น„์Šท) reducer : reducer ์ •์˜ initialState : ์ดˆ๊ธฐ..

Front-End/React 2023.06.22

React] Hook : useCallback

useCallback useMemo์™€ ๋น„์Šทํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ ๋ฐ ์„ฑ๋Šฅ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” hook์ž…๋‹ˆ๋‹ค. useMemo๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๊ณ  ํ•˜๋ฉด, useCallback์€ ํ•จ์ˆ˜๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ๋Š” ์ฃผ๋กœ ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋ณด๋‹ค๋Š” ํ•จ์ˆ˜ ์ƒ์„ฑ ์ž์ฒด์˜ ๋น„์šฉ์ด ํด ๋•Œ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์ž์‹ ์ปดํฌ๋„ŒํŠธ์— ํ•จ์ˆ˜๋ฅผ props๋กœ ๋„˜๊ธธ ๋•Œ๋Š” ํ•ด๋‹น ํ•จ์ˆ˜๋Š” useCallback์œผ๋กœ ๊ฐ์‹ธ์•ผํ•œ๋‹ค. const ๋ณ€์ˆ˜ = useCallback(()⇒{}), [deps]); deps์— ์˜์กด์„ฑ์„ ๋ถ€์—ฌํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์ด ๋ณ€ํ•  ๋•Œ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ useEffect์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค onClickํ•จ์ˆ˜์— useCallback์„ ์คŒ์œผ๋กœ์จ ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ, ํ•จ์ˆ˜๊ฐ€ ๋‹ค์‹œ ์ •์˜๋˜๋Š” ๊ฒƒ์„ ..

Front-End/React 2023.06.22

React] Hook : useMemo

useMemo ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด, ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ์ „์ฒด๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆํ•„์š”ํ•œ ๋ถ€๋ถ„๋„ ๊ณ„์† ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ๊ฐ’์ด ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ, Hook์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์ €์žฅํ•ด ๋†“๊ณ , ํ•„์š”ํ•  ๋•Œ๋งŒ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. const ๋ณ€์ˆ˜ = useMemo(()⇒{}), [deps]); deps์— ์˜์กด์„ฑ์„ ๋ถ€์—ฌํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์ด ๋ณ€ํ•  ๋•Œ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ useEffect์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค ๋ฐ”๋‹ฅ์—์„œ ์ฐ์€ memo๋Š” inputํƒœ๊ทธ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ฐํžˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , useMemo์•ˆ์— ์žˆ๋Š”๋ฐ test๋Š” ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ, setClick์œผ๋กœ ์ธํ•ด click๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งŒ ์ฐํžˆ๋Š” ๊ฒƒ์„ ํ™•์ธ..

Front-End/React 2023.06.20

React] Hook : useRef

useRef useRef๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ DOM์— ์ ‘๊ทผํ•˜์—ฌ ํƒœ๊ทธ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. const ref = useRef(์ดˆ๊ธฐ๊ฐ’); ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” Ref ref๋Š” state๊ฐ€ ์•„๋‹ˆ๋ผ ์ผ๋ฐ˜ JS๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ์‹œ์ ์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ™”๋ฉด์— ๊ทธ๋ ค์ง€๋Š” ๊ฒƒ์— ๊ด€์—ฌํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์ ํ•ฉํ•˜๋ฉฐ, ๋ฆฌ๋ Œ๋”๋ง ์‚ฌ์ด์— ๊ฐ’์„ ์ €์žฅํ•ด ๋†“์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์—ญ ๋ณ€์ˆ˜์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ ๊ฐ’์ด ์ดˆ๊ธฐํ™”๋˜๊ฑฐ๋‚˜ ๋ณ€ํ•˜์ง€ ์•Š๊ณ , ์ง์ ‘ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ref๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ๋•Œ๋Š” ref.current๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด๋˜๊ณ , ๋ชจ๋“  ํƒ€์ž…์˜ ๊ฐ’์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.. (boolean, string, number ๋“ฑ..) ์˜ˆ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค alert์œผ๋กœ ๋œจ๋Š” ref.current๋Š” ..

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