Skip to content

jjanmo/reacthooks101

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

77 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ReactHooks101

๋ฆฌ์•กํŠธ ํ›…์Šค์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

Log ๐Ÿ“– - 21.12 Restart and Reset all
  • 22.01.03 Finish MiniProject03

  • 23.02.01 ๋ฆฌ์•กํŠธํ›…์Šค101 ํŽ˜์ด์ง€ํ™”!

Intro

์˜ˆ์ „์— ๋ฆฌ์•กํŠธ์—์„œ๋Š” ์ƒํƒœ ๋ณ€ํ™”์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด, ํ˜น์€ API์š”์ฒญ์„ ํ•„์š”๋กœ ํ•  ๋•Œ, ๋ฆฌ์•กํŠธ์˜ ๋ผ์ดํ”„ ๋ผ์ดํด ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋Š” ํ•ญ์ƒ class๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ๋งŒ ํ–ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ํ˜• ์ปดํผ๋„ŒํŠธ๋Š” ๋‹จ์ˆœํžˆ props๋ฅผ ๊ฑด๋„ค์ฃผ๋Š” ์—ญํ• ์„ ํ†ตํ•ด์„œ ๋‹จ์ˆœ presenter์˜ ์—ญํ• ์˜ ์ปดํผ๋„ŒํŠธ๋กœ์„œ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ•จ์ˆ˜ํ˜• ์ปดํผ๋„ŒํŠธ๊ฐ€ ๊ฐ–๋Š” ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ, ํ•จ์ˆ˜ํ˜•์„ ์ข€ ๋” ๋ฐœ์ „์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ recompose ๋ผ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ Andrew Clark์— ์˜ํ•ด์„œ ์ง„ํ–‰๋˜์—ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์ข‹์€ ๋ฐ˜์‘์„ ์–ป์œผ๋ฉด์„  ์ ์ฐจ์ ์œผ๋กœ ํ•จ์ˆ˜ํ˜• ๋ฆฌ์•กํŠธ์— ๋Œ€ํ•œ ์š”๊ตฌ๊ฐ€ ๋งŽ์•„์กŒ๊ณ , ์‹ค์ œ๋กœ ํŽ˜์ด์Šค๋ถ ๋‚ด๋ถ€์ ์œผ๋กœ ํ•จ์ˆ˜ํ˜• ๋ฆฌ์•กํŠธ(ํ›…์Šค)๋ฅผ ๊ฐœ๋ฐœ ์ค‘์— ์žˆ์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ Andrew๋Š” React Team์— ํ•ฉ๋ฅ˜ํ•˜๊ฒŒ ๋˜๊ณ , ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ „๊ฒฉ์ ์œผ๋กœ ๋ฆฌ์•กํŠธ๊ฐ€ ๋ฐ›์•„๋“ค์—ฌ์„œ React Hooks๊ฐ€ ํƒ„์ƒ(?)ํ•˜์˜€๋‹ค. React Hooks์€ ๋ฆฌ์•กํŠธ๋ฅผ ํ•จ์ˆ˜ํ˜• ์ปดํผ๋„ŒํŠธ์—์„œ๋„ ํด๋ž˜์Šค ์ปดํผ๋„ŒํŠธ์™€ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•˜๊ฒŒ๋” ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๋™๊ธฐ๋ฅผ ๊ฐ–๊ณ  ํƒ„์ƒํ•˜๊ฒŒ ๋œ ๋ฆฌ์•กํŠธ์˜ ์—…๋ฐ์ดํŠธ ๋ฒ„์ „์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

What is Hooks

ํ›…์Šค๋Š” ์ƒ‰๋‹ค๋ฅธ ๊ฐœ๋…์ด ์•„๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ํ•จ์ˆ˜ํ˜• ์ปดํผ๋„ŒํŠธ์— ์•ฝ๊ฐ„์˜ ๊ธฐ๋Šฅ(?)์ด ์ถ”๊ฐ€๋œ ๊ฐœ๋…์ด๋‹ค. ์ฆ‰ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜์™€ ๊ฐœ๋…์ ์œผ๋กœ ๊ฐ™๋‹ค. ์—ฌ๊ธฐ์„œ ์•Œ์•„๋‘์–ด์•ผ ํ•  ํ›…์Šค์˜ 2๊ฐ€์ง€ ๊ทœ์น™์ด ์žˆ๋‹ค.

  • ํ•ญ์ƒ ์ตœ์ƒ์œ„(at the Top Level)์—์„œ๋งŒ Hook์„ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค. ๋ฐ˜๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ ํ˜น์€ ์ค‘์ฒฉ๋œ ํ•จ์ˆ˜ ๋‚ด์—์„œ Hook์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • ์˜ค์ง React ํ•จ์ˆ˜ ๋‚ด์—์„œ Hook์„ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š” ํ˜ธ์ถœํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ๋‹จ, ์ปค์Šคํ…€ ํ›…์Šค ์•ˆ์—์„œ๋Š” ๋‹ค๋ฅธ ํ›…์Šค๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ํ›…์Šค๋Š” ์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ์ง€์ผœ์•ผ๋งŒ ํ• ๊นŒ?

ํ›…์Šค๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ• ๊นŒ?

https://hewonjeong.github.io/deep-dive-how-do-react-hooks-really-work-ko/

https://jeonghwan-kim.github.io/dev/2022/04/11/use-state.html

https://www.the-guild.dev/blog/react-hooks-system

https://ko.reactjs.org/docs/hooks-intro.html

Hooks API

๋ฆฌ์•กํŠธ์— ์ œ๊ณตํ•˜๋Š” Hooks API๋Š” ์ด 10๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๊ฐ๊ฐ์˜ API๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.

๐Ÿ“Œ Hook List

Hooks MiniProject

  1. Lotto Game โœ…

    lotto-game directory

  2. TicTacToe

    tictactoe directory

    useReducer์™€ Context API๋ฅผ ํ™œ์šฉํ•ด๋ณด์ž.

  3. Context Dashboard โœ…

    dashboard directory

    Context API ํ™œ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ToDo-Dashboard

  4. Mine Sweeper

    Hooks์˜ ์ข…ํ•ฉ ์„ ๋ฌผ์„ธํŠธ!

์œ ์šฉํ•œ ์ปค์Šคํ…€ ํ›…์„ ๋ชจ์•„๋†“์€ ์ฝœ๋ ‰์…˜ ์ €์žฅ์†Œ ๐Ÿ‘

์ปค์Šคํ…€(์‚ฌ์šฉ์ž ์ •์˜)ํ›…์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” Hooks API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•œ ํ›…์Šค๋ฅผ ๋งํ•œ๋‹ค. ์ปค์Šคํ…€ ํ›…์Šค์˜ ๋„ค์ด๋ฐ์€ ํ•ญ์ƒ use๋กœ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ปค์Šคํ…€ ํ›…์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ด๋‹ค.

Why & When to make custom hooks

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปดํผ๋„ŒํŠธ์—์„œ ์ƒํƒœ ๊ด€๋ จ ๋กœ์ง์ด ์ค‘๋ณต๋  ๋•Œ, ์ปค์Šคํ…€ ํ›…์„ ๋งŒ๋“ค์–ด์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.(reusable)

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ์ปค์Šคํ…€ ํ›…์„ ๋งŒ๋“ค์ˆ˜ ์žˆ๋‹ค.(encapsulated)

  • ์ปค์Šคํ…€ ํ›…์„ ๋งŒ๋“ฆ์œผ๋กœ์„œ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์šฉ์ดํ•ด์ง„๋‹ค.(testable)

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ปค์Šคํ…€ ํ›…์€ ํŠน์ • ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (์ด ๋ถ€๋ถ„์€ ๋ฌด์กฐ๊ฑด์€ ์•„๋‹ˆ๋ฉฐ, ์ปดํผ๋„ŒํŠธ ํ˜น์€ ๋งˆํฌ์—…๋„ ๋ฐ˜ํ™˜๊ฐ€๋Šฅํ•˜๋‹ค.)

Ref


๊ฐœํŽธ

docs https://ko.reactjs.org/docs/hooks-intro.html

hooks์˜ ์˜ˆ์‹œ

  • ์‹ค์ œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ–ˆ๋Š”์ง€...
  • jqeury ์ปดํผ๋„ŒํŠธ ์‚ฌ์šฉ

About

Learn ReactHooks and make something customizing hooks ๐Ÿš€

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages