3. React Hook

  • React Hook ์ด๋ž€

  • Hooks

    • useState

    • useEffect

    • useContext

    • useRef

    • useLayoutEffect

  • React StrictMode๋ž€

React Hooks

๊ธฐ์กด ํด๋ž˜์Šค ๋ฐ”ํƒ•์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š” ์—†์ด ์ƒํƒœ ๊ฐ’๊ณผ ์—ฌ๋Ÿฌ React์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

์ด์ „ ๋ฐฉ์‹์˜ ๋ฌธ์ œ์ 

  • ์ปดํฌ๋„ŒํŠธ ์‚ฌ์ด์—์„œ ์ƒํƒœ ๋กœ์ง์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์›€

    • ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋กœ์ง์„ ๋ถ™์ด๋Š” ๋ฒ•์„ ์ œ๊ณตํ•˜์ง€ ์•Š์•„ render props๋‚˜ HOC, Higher Order Component(๊ณ ์ฐจ ์ปดํฌ๋„ŒํŠธ) ๊ฐ™์€ ํŒจํ„ด์„ ์‚ฌ์šฉํ–ˆ์Œ

    • ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์€ Wrapper Hell์„ ๋งŒ๋“ค ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋ฉฐ ์ฝ”๋“œ์˜ ์ถ”์ ์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ฆ

    • Hook์€ ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ์ƒํƒœ ๊ด€๋ จ ๋กœ์ง์„ ์ถ”์ƒํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ

  • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณต์žกํ•ด์ง

    • ์ƒํƒœ๊ด€๋ จ ๋กœ์ง๋“ค๊ณผ ์‚ฌ์ด๋“œ์ดํŽ™ํŠธ๊ฐ€ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์€ ๋ถ„๋ฆฌํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๊ณ  ์ปดํฌ๋„ŒํŠธ์˜ ์žฌ์‚ฌ์šฉ์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ฆ

    • Hook์„ ํ†ตํ•ด ์„œ๋กœ ๋น„์Šทํ•œ ๊ฒƒ์„ ํ•˜๋Š” ํ•จ์ˆ˜๋“ค๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Œ

  • Class๋Š” ํ˜ผ๋ž€์Šค๋Ÿฌ์›€

    • ๋ฆฌ์•กํŠธ์—์„œ Class๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ this์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”

    • Class ์‚ฌ์šฉ์„ ์œ„ํ•ด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋“ฑ๋ก๋˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ดํ•ดํ•ด์•ผํ•จ

    • Hook์€ Class ์—†์ด ๋ฆฌ์•กํŠธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์‹œ

render props : ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ props๋ฅผ ์ด์šฉํ•˜๋Š” ํ…Œํฌ๋‹‰

๊ณ ์ฐจ ์ปดํฌ๋„ŒํŠธ : ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์ ธ์™€ ์ƒˆ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

Hook์ด ๊ฐ€์ ธ์˜จ ๋ณ€ํ™”

  • ๊ณผ๊ฑฐ์—๋Š” ์ƒํƒœ๋ฅผ ๊ฐ€์ง„ ์ปดํฌ๋„ŒํŠธ๋Š” class ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ค๊ณ  ๋‚˜๋จธ์ง€ ์ปดํฌ๋„ŒํŠธ๋งŒ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ค์—ˆ์œผ๋‚˜ ์ด์ œ๋Š” ๋ชจ๋‘ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

  • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š”์ง€ ์‹ ๊ฒฝ์“ธ ํ•„์š”๊ฐ€ ์—†๊ณ  ๋ณต์žกํ•œ ์š”์†Œ๋Š” ์ „๋ถ€ Hook์œผ๋กœ ๊ฒฉ๋ฆฌ, ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ

useState

const [state, setState] = useState(initialState);
  • ์ƒํƒœ๊ฐ’๊ณผ ๊ทธ ๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๋Š” ํ•จ์ˆ˜ ๋ฐ˜ํ™˜

  • ์ตœ์ดˆ ์ƒํƒœ๊ฐ’์€ ํ•จ์ˆ˜์˜ ์ธ์ž ๊ฐ’

  • setState ํ•จ์ˆ˜๋Š” ์ƒํƒœ๋ฅผ ๊ฐฑ์‹ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ

    • ์ƒˆ state ๊ฐ’์„ ๋ฐ›์•„ ์ปดํฌ๋„ŒํŠธ ๋ฆฌ๋ Œ๋”๋ง์„ ํ์— ๋“ฑ๋ก

    • ๋‹ค์Œ ๋ฆฌ๋ Œ๋”๋ง ์‹œ์— useState๋ฅผ ํ†ตํ•ด ๋ฐ˜ํ™˜๋ฐ›์€ ์ฒซ๋ฒˆ์งธ ๊ฐ’์€ ํ•ญ์ƒ ๊ฐฑ์‹ ๋œ ์ตœ์‹  state

  • setState๋Š” ํ˜„์žฌ state์„ ๋ฐ”๊พธ์ง€ ์•Š์Œ. ๋‹ค์Œ ๋ Œ๋”๋ง์—์„œ state ๊ฐ’์ด ๋ฐ”๋€Œ์–ด ์žˆ์Œ

useEffect

  • ๋ Œ๋”๋ง ์ดํ›„ ํ•ด์•ผํ•  ์ผ(=React์˜ ์™ธ๋ถ€์™€ ๊ด€๋ จ๋œ ์ผ) ์ง€์ •

  • ์˜์กด์„ฑ ๋ฐฐ์—ด์„ ํ†ตํ•ด ์–ธ์ œ ์‹คํ–‰ํ• ์ง€ ์ง€์ •๊ฐ€๋Šฅ(์˜์กด์„ฑ์ด ๋ณ€๊ฒฝ๋ ๋•Œ๋งˆ๋‹ค ์‹คํ–‰)

  • ๋ Œ๋”๋ง๋งˆ๋‹ค ์‹คํ–‰

  • ๋ฆฌํ„ด๊ฐ’์œผ๋กœ ์ข…๋ฃŒ์‹œ(์ปดํฌ๋„ŒํŠธ ์–ธ๋งˆ์šดํŠธ์‹œ) ์‹คํ–‰ํ•  ์ž‘์—…์„ ์ง€์ • ๊ฐ€๋Šฅ(clean-up method)

  • ์˜์กด์„ฑ ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ์œผ๋ฉด ์ตœ์ดˆ ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰๋จ

Strict Mode

Side effect ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด effect๋ฅผ ๋‘ ๋ฒˆ์”ฉ ์‹คํ–‰

Last updated