Skip to content

Keyword-Project/keyword_searcher_project_frontend

Repository files navigation

๐Ÿ” ์ฟ ํŒก ํฌ๋กค๋ง ๊ธฐ๋ฐ˜ ์ƒํ’ˆ ๊ฒฝ์Ÿ๋ ฅ ๋ถ„์„ ํ”Œ๋žซํผ Diggggle

๋””๊ธ€

์„œ๋น„์Šค ๋งํฌ



ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

  • ์›ํ•˜๋Š” ์ƒํ’ˆ(ํ‚ค์›Œ๋“œ) ํ˜น์€ ์นดํ…Œ๊ณ ๋ฆฌ ๊ธฐ๋ฐ˜ ์ฟ ํŒก ์ƒํ’ˆ ์ •๋ณด ๋ฐ ๊ฒฝ์Ÿ๋ฅ ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ
  • ๊ตฌ๋งค๋Œ€ํ–‰ ์‹œ์žฅ ๋‚ด ์ ์œ ์œจ ๋ฐ ๋™ํ–ฅ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋žซํผ


ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์‚ฌ์šฉ์ž๊ฐ€ ์ƒํ’ˆ ํ‚ค์›Œ๋“œ ํ˜น์€ ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒ€์ƒ‰ ์‹œ ์ฟ ํŒก ํฌ๋กค๋ง์„ ํ†ตํ•ด ์ƒํ’ˆ ๊ฒฝ์Ÿ๋ ฅ์„ ๋ถ„์„ํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”Œ๋žซํผ

๊ธฐ๊ฐ„ : 2024-04 ~ 2024-05 (์•ฝ 2๊ฐœ์›”)

์ธ์› : ํ”„๋ก ํŠธ์—”๋“œ(1๋ช…) : ๋ณ€์žฌ์ • / ๋ฐฑ์—”๋“œ(1๋ช…) : ์˜ค์ฐฌ์†”



Stacks(ํ”„๋ก ํŠธ์—”๋“œ)

React

  • ๋ฐ์ดํ„ฐ ์กฐํšŒ๊ธฐ๋Šฅ์ด ์ฃผ๋œ ์—ญํ• ์ธ ๋ณธ ํ”„๋กœ์ ํŠธ์—์„œ Virtual Dom์€ ํšจ์œจ์ ์œผ๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์ค๋‹ˆ๋‹ค.
  • ๋ฐฉ๋Œ€ํ•œ ์ƒํƒœ๊ณ„ ๊ธฐ๋ฐ˜ ๋‹ค์–‘ํ•œ ์ •๋ณด์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ ๊ฐ€๋Šฅ
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ตœ์ ํ™”๋œ ๊ฐœ๋ฐœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต
  • ์†์‰ฌ์šด ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ์„ฑ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž์ฒด ์œ ์—ฐ์„ฑ, ํ˜ธํ™˜์„ฑ ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.

Typescript

  • ์•ˆ์ •์ ์ธ ๊ฐœ๋ฐœ๊ณผ ๋†’์€ ์ˆ˜์ค€์˜ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์œ ์ง€
  • ์†์‰ฝ์šด ๋ฒ„๊ทธ ์˜ˆ๋ฐฉ
  • ๊ฐ•๋ ฅํ•œ ํƒ€์ž… ์‹œ์Šคํ…œ ๊ธฐ๋ฐ˜ ์ปดํŒŒ์ผ, ๋ฒ„๊ทธ ์˜ˆ๋ฐฉ ๋ฐ ์†์‰ฌ์šด ๋””๋ฒ„๊น…
  • ๋†’์€ ์ƒ์‚ฐ์„ฑ๊ณผ ํ˜ธํ™˜์„ฑ

Styled Components

  • CSS ํŒŒ์ผ์„ ๋ณ„๋„ ๊ด€๋ฆฌํ•  ํ•„์š”์—†๋Š” CSS-in-JS ๋ฐฉ๋ฒ•
  • CSS ์ปดํฌ๋„ŒํŠธํ™”๋กœ CSS ๋ชจ๋ธ์„ ๋ฌธ์„œ ๋ ˆ๋ฒจ์ด ์•„๋‹Œ ์ปดํฌ๋„ŒํŠธ ๋ ˆ๋ฒจ๋กœ ์ถ”์ƒํ™”. (๋ชจ๋“ˆ์„ฑ ์ด์ )
  • JavaScript์™€ CSS ์‚ฌ์ด์˜ ์ƒ์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ๊ณต์œ  ๊ฐ€๋Šฅ
  • ์œ ๋‹ˆํฌํ•œ ํด๋ž˜์Šค๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ๊ฒฝ๋Ÿ‰ํ™” ๋ฐ ํด๋ž˜์Šค ์ž‘๋ช… ๊ณ ์ถฉ ํ•ด์†Œ

Vite

  • ES build๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ข…์†์„ฑ์„ ๋ฏธ๋ฆฌ ๋ฌถ์–ด ๋ฒˆ๋“ค๋ง ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค.
  • HMR(Hot Module Replacement)์„ ์ด์šฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ ๋„ ์ผ๋ถ€ ์ปจํ…์ธ ๋งŒ์„ ๊ฐฑ์‹ .
    • ์ฆ‰ ์†Œ์Šค์ฝ”๋“œ ์ˆ˜์ • ์‹œ ๋ฒˆ๋“ค๋ง๊ณผ์ •์„ ๋‹ค์‹œ ๊ฑฐ์น˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ˆ˜์ •๋œ ๋ชจ๋“ˆ ๊ด€๋ จ ๋ถ€๋ถ„๋งŒ ๊ต์ฒด ์ดํ›„, ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์š”์ฒญํ•˜๋ฉด ๊ต์ฒด๋œ ๋ชจ๋“ˆ์„ ์ „๋‹ฌ.
  • HTTP ํ—ค๋”๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ „์ฒด ํŽ˜์ด์ง€์˜ ๋กœ๋“œ ์†๋„ ํ–ฅ์ƒ + ์บ์‹œ ๊ธฐ๋Šฅ ์ œ๊ณต

Redux

  • ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ
  • ์•ก์…˜์— ๋”ฐ๋ฅธ ๋ชจ๋“  ๋ณ€๊ฒฝ์„ ์ถ”์  ๊ฐ€๋Šฅ
  • ์ž‘์—…ํšจ์œจ ๊ทน๋Œ€ํ™”
  • ํŽธ๋ฆฌํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๊ฐœ๋ฐœ์ž๋„๊ตฌ ์ง€์›
  • ๋งค์šฐ ๊ฐ€๋ณ์Šต๋‹ˆ๋‹ค. (์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌํ•จ 2kB)

react-hook-form

  • ์ œ์–ด ์ปดํฌ๋„ŒํŠธ์—์„œ๋งŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์‹ค์‹œ๊ฐ„ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ ๋™๊ธฐํ™”๋ฅผ ๋น„์ œ์–ด ์ปดํฌ๋„ŒํŠธ ํ˜•์‹์œผ๋กœ ์ œ๊ณต.
  • ์ œ์–ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ณด๋‹ค ํ›จ์”ฌ ์ ์€ ์ฝ”๋“œ๋กœ ๋” ๋‚˜์€ ์„ฑ๋Šฅ ์ œ๊ณต.
  • ๋น„์ œ์–ด ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๋ฆฌ๋ Œ๋”๋ง์„ ์ตœ์†Œํ™” -> ๋งˆ์šดํŒ… ์†๋„ ํ–ฅ์ƒ.
  • ์ข…์†์„ฑ์ด ์—†๋Š” ๊ฒฝ๋Ÿ‰ ์‚ฌ์ด์ฆˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.
  • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธ ์ œ๊ณต
  • ๊ณต์‹๋ฌธ์„œ๊ฐ€ ์ •๋ง ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ง€์†์ ์ธ ์—…๋ฐ์ดํŠธ

React-Query

  • ํƒ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋Œ€๋น„ ์ ์€ ์–‘์˜ BoilerPlate -> ๊ฐ„ํŽธ, ์œ ์ง€ ๋ณด์ˆ˜ ์šฉ์ด
  • React Hooks๊ณผ ์œ ์‚ฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต
  • ๋น„๋™๊ธฐ ๊ณผ์ •์„ ์„ ์–ธ์ ์œผ๋กœ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  • ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ ์ƒํƒœ ํŒŒ์•… ํ›„ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅ (์บ์‹ฑ ๊ธฐ๋Šฅ)
  • ์บ์‹ฑ์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†๋„ ํ–ฅ์ƒ ๋ฐ ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์š”์ฒญ ์ œ๊ฑฐ

Vercel

  • ์ •๋ง ๊ฐ„ํŽธํ•œ ๋ฐฐํฌ๊ณผ์ •
  • ๋นŒํŠธ์ธ CI/CD, Live Preview, Analytics, ์‚ฌ์ดํŠธ ์„ฑ๋Šฅ ์ธก์ • ์ œ๊ณต



์„œ๋น„์Šค ์•„ํ‚คํ…์ณ



Key Features

  • ํ™ˆ ํ™”๋ฉด : ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰, ์นดํ…Œ๊ณ ๋ฆฌ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ๋ถ„๋ฅ˜
  • ์ƒํ’ˆ์กฐํšŒ : ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์ƒํ’ˆ ํ•„ํ„ฐ๋ง ํ›„ ์ถœ๋ ฅ
  • ์ƒํ’ˆ์กฐํšŒ ํ•„ํ„ฐ๋ง : Query-String ๊ธฐ๋ฐ˜ ๋‚ ์งœ, ์ƒํ’ˆ๊ฐœ์ˆ˜, ์ƒํ’ˆ ๊ฐ€๊ฒฉ ํ•„๋”๋ง ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์ƒํ’ˆํŽ˜์ด์ง€ ์ ‘์† : ์กฐํšŒ๋œ ์ƒํ’ˆ ์ƒ์„ธํŽ˜์ด์ง€ ์ ‘์† ๊ฐ€๋Šฅ
  • ์นดํ…Œ๊ณ ๋ฆฌ ๋ฆฌ์ŠคํŠธ ๋ Œ๋”๋ง : 1์ฐจ, 2์ฐจ, 3์ฐจ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋™์  ๋ Œ๋”๋ง ๊ตฌํ˜„
  • ์กฐํšŒ ๋ฐ์ดํ„ฐ ์—‘์…€๋‹ค์šด๋กœ๋“œ : ๋ถˆ๋Ÿฌ์˜จ ์ƒํ’ˆ ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์—‘์…€ํŒŒ์ผ๋กœ ์ €์žฅ ๊ฐ€๋Šฅ


ํ™”๋ฉด ๊ตฌ์„ฑ ๋ฐ ์ฃผ์š” ๊ธฐ๋Šฅ ์‹œํ˜„ ์˜์ƒ ๋ฐ ์„ค๋ช…

์นดํ…Œ๊ณ ๋ฆฌ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง ๋กœ์ง ๊ตฌํ˜„

  • 1์ฐจ, 2์ฐจ, 3์ฐจ ์นดํ…Œ๊ณ ๋ฆฌ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„
  • ์ƒ์œ„ ์นดํ…Œ๊ณ ๋ฆฌ ๊ฐ’์— ๋”ฐ๋ผ ํ•˜์œ„ ์นดํ…Œ๊ณ ๋ฆฌ ์ปดํฌ๋„ŒํŠธ ๋ชฉ๋ก์ด ๋™์ ์œผ๋กœ ๋‹ฌ๋ผ์ง€๋„๋ก ๊ตฌํ˜„
  • ์ƒ์œ„ -> ํ•˜์œ„ ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋™ ์‹œ ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ ๊ฐ’ ํ™”์‚ดํ‘œ ์•„์ด์ฝ˜ ๊ณ ์ • ํ‘œ์‹œ
  • 1์ฐจ ์นดํ…Œ๊ณ ๋ฆฌ ์ปดํฌ๋„ŒํŠธ hover -> 2์ฐจ ์นดํ…Œ๊ณ ๋ฆฌ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง, 2์ฐจ ์นดํ…Œ๊ณ ๋ฆฌ ์ปดํฌ๋„ŒํŠธ hover -> 3์ฐจ ์นดํ…Œ๊ณ ๋ฆฌ ์ปดํฌ๋„ŒํŠธ hover
  • 2์ฐจ -> 1์ฐจ ์นดํ…Œ๊ณ ๋ฆฌ hover ์‹œ 3์ฐจ ์นดํ…Œ๊ณ ๋ฆฌ ์ปดํฌ๋„ŒํŠธ unmount
  • ์นดํ…Œ๊ณ ๋ฆฌ ์ปจํฌ๋„ŒํŠธ ์˜์—ญ ์ดํƒˆ ์‹œ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ unmount
  • ์นดํ…Œ๊ณ ๋ฆฌ ๊ฐ’ ์„ ํƒ ์‹œ ์ƒ์œ„ ์นดํ…Œ๊ณ ๋ฆฌ ๊ฐ’ ๊ฐ™์ด ๋ Œ๋”๋ง

์นดํ…Œ๊ณ ๋ฆฌ์ปดํฌ๋„ŒํŠธ๊ตฌํ˜„


input ์ˆซ์ž๋งŒ ์ž…๋ ฅ ๊ฐ€๋Šฅ

  • ์ •๊ทœํ‘œํ˜„์‹์„ ํ™œ์šฉํ•ด ์ˆซ์ž ์™ธ ๊ฐ’ ์ž…๋ ฅ์‹œ ๊ณต๋ฐฑ์œผ๋กœ ์ฆ‰์‹œ ๋ณ€ํ™˜
  • ์ž์—ฐ์ˆ˜ ์™ธ ๊ฐ’์„ ์ž…๋ ฅ ํ›„ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‹œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ฏ€๋กœ ์—๋Ÿฌ ์‚ฌ์ „ ์ฐจ๋‹จ

input์ˆซ์ž๋งŒ์ž…๋ ฅ๊ฐ€๋Šฅ


Tooltip ๊ตฌํ˜„

  • transition, transform ์†์„ฑ์„ ์ด์šฉํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ ์šฉ
  • pseudo-element ๋ฅผ ํ™œ์šฉํ•ด ํˆดํŒ content ์ œ์ž‘
  • content๋ฅผ props๋กœ ์ „๋‹ฌํ•ด ๋™์  ๋ฉ”์‹œ์ง€ ๊ตฌํ˜„

ํˆดํŒ๊ตฌํ˜„


React Hook Form ํ™œ์šฉ ์‹ค์‹œ๊ฐ„ ์œ ํšจ์„ฑ ๊ฒ€์ฆ

  • React Hook Form ์„ ํ†ตํ•ด ๋น„์ œ์–ด ์ปดํฌ๋„ŒํŠธ ํ˜•์‹์œผ๋กœ ์‹ค์‹œ๊ฐ„ ์œ ํšจ์„ฑ ๊ฒ€์ฆ
  • register, watch ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์‹ค์‹œ๊ฐ„ input๊ฐ’ ๊ฐ์‹œ

๋ฆฌ์•กํŠธํ›…ํผ์œ ํšจ์„ฑ๊ฒ€์ฆ


๋ฐ์ดํ„ฐ ์—‘์…€ ์ €์žฅ ๊ธฐ๋Šฅ

  • CSVLink ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ ์—‘์…€ ๋‹ค์šด๋กœ๋“œ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์—‘์…€๋‹ค์šด๋กœ๋“œ

์—‘์…€


๊ฒ€์ƒ‰๋ฐฉ๋ฒ• ๋ฐ ๊ฐ€๊ฒฉ ์ž…๋ ฅ๊ฐ’์— ๋”ฐ๋ฅธ ๋™์  Modal์ฐฝ์„ ์ด์šฉํ•œ ๊ตฌํ˜„ ๋ฐ ์—๋Ÿฌ ํ•ธ๋“ค๋ง

  • createPortal์„ ์ด์šฉํ•ด Modal ์ฐฝ์„ DOM์˜ ๋‹ค๋ฅธ ์œ„์น˜์—์„œ ๋ Œ๋”๋ง ๋˜๋„๋ก ๊ตฌํ˜„
  • ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ DOM ๊ตฌ์กฐ๋ฅผ ๋ฒ—์–ด๋‚˜ ํŠน์ • DOM ์—˜๋ฆฌ๋จผํŠธ์— ์ง์ ‘ ๋ Œ๋”๋ง
  • Modal content๊ฐ’์„ props๋กœ ๋„˜๊ฒจ ๋™์  ๋ฉ”์‹œ์ง€ ๋ Œ๋”๋ง

  • ์นดํ…Œ๊ณ ๋ฆฌ ๋ฏธ์„ ํƒ ์‹œ ์•Œ๋ฆผ์ฐฝ ๋ Œ๋”๋ง
  • ์ตœ์†Œ๊ฐ€๊ฒฉ์ด ์ตœ๋Œ€๊ฐ€๊ฒฉ๋ณด๋‹ค ํด ๊ฒฝ์šฐ ์•Œ๋ฆผ์ฐฝ ๋ Œ๋”๋ง
  • ์ตœ์†Œ๊ฐ€๊ฒฉ ๋ฏธ์ž…๋ ฅ, ์ตœ๋Œ€๊ฐ€๊ฒฉ์ด 10000๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ ์•Œ๋ฆผ์ฐฝ ๋ Œ๋”๋ง

์นดํ…Œ๊ณ ๋ฆฌ์—๋Ÿฌํ•ธ๋“ค๋ง

  • ํ‚ค์›Œ๋“œ ๋ฏธ์ž…๋ ฅ์‹œ ์•Œ๋ฆผ์ฐฝ ๋ Œ๋”๋ง
  • ์ตœ์†Œ๊ฐ€๊ฒฉ์ด ์ตœ๋Œ€๊ฐ€๊ฒฉ๋ณด๋‹ค ํด ๊ฒฝ์šฐ ์•Œ๋ฆผ์ฐฝ ๋ Œ๋”๋ง
  • ์ตœ์†Œ๊ฐ€๊ฒฉ ๋ฏธ์ž…๋ ฅ, ์ตœ๋Œ€๊ฐ€๊ฒฉ์ด 10000๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ ์•Œ๋ฆผ์ฐฝ ๋ Œ๋”๋ง

ํ‚ค์›Œ๋“œ์—๋Ÿฌํ•ธ๋“ค๋ง


๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„

  • ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋ฌผํŒŒ์žฅ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„
  • keyframes, pseudo-element ๋ฅผ ํ™œ์šฉํ•ด ํด๋ฆญ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ๋™์  ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„

๋ฒ„ํŠผํด๋ฆญ์‹œ๋ฌผํŒŒ์žฅ




ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

1. ์นดํ…Œ๊ณ ๋ฆฌ ๊ฐ’ ์„ ํƒ ๋ฐฉ๋ฒ• ๋ณ€๊ฒฝ

  • ๋“œ๋กญ๋ฐ•์Šค -> ์ปดํฌ๋„ŒํŠธ hover ๋ฐฉ์‹ (reference : ์ฟ ํŒก )
  • ๋“œ๋กญ๋ฐ•์Šค๋Š” ๋ณ„๋„๋กœ ํด๋ฆญํ•ด์•ผํ•˜๊ธฐ์— ๋ฒˆ๊ฑฐ๋กญ๋‹ค๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์žˆ์–ด hover ๋ฐฉ์‹์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • onMouseOver, onMouseLeavee ๋“ฑ ์ปค์„œ ์ด๋ฒคํŠธ ๊ด€๋ จ ํ•จ์ˆ˜๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์  ๋„์ „์„ ์ด๋ฃฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

2. ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์กฐํšŒ ๊ฐ€๋Šฅ

๋ฌธ์ œ์ 

  • ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์œผ๋กœ ๋ฐ์ดํ„ฐ์กฐํšŒํ•„ํ„ฐ๋ง๊ฐ’์ด ์ „๋‹ฌ๋˜์ง€๋งŒ ํ•ด๋‹น url์„ ๋ณต์‚ฌ ํ›„ ์ƒˆ์ฐฝ์—์„œ ์—ด๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€์•Š๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ
  • ํ•„ํ„ฐ๋ง๊ฐ’๋“ค์„ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์œผ๋กœ ์ „๋‹ฌํ•˜๊ธฐ๋งŒ ํ• ๋ฟ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ Result๊ฐ€ ์•„๋‹Œ ๊ฒƒ์ด ๋ฌธ์ œ
  • ๋ถ€๋ชจ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ ํ•œ ํ›„ props ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ ์ƒ๊ธด ๋ฌธ์ œ

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

  • ์ƒํ’ˆ์กฐํšŒ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ํ•„ํ„ฐ๋ง ๊ฐ’์„ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์œผ๋กœ ์ „๋‹ฌ
  • urlํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด Result ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žฌ๋ Œ๋”๋ง๋˜๋„๋ก useEffect ์˜์กด์„ฑ ๋ฐฐ์—ด์— ์ฟผ๋ฆฌ์ŠคํŠธ๋ง๊ฐ’์„ ๋„ฃ์–ด์คฌ์Šต๋‹ˆ๋‹ค.

3. ๋น„๋™๊ธฐํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ๋กœ๋”ฉ์ฐฝ ๋ณ€๊ฒฝ

  • spinner ์ปดํฌ๋„ŒํŠธ -> skeleton UI ๋ณ€๊ฒฝ
  • BootStrap์—์„œ ๊ฐ€์ ธ์˜จ spinner ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋กœ๋”ฉ์ฐฝ์œผ๋กœ ์‚ฌ์šฉํ•˜๋‹ค ๋„ˆ๋ฌด ๋‹จ์กฐ๋กญ๋‹ค ์ƒ๊ฐํ•ด ๋™์ ์ด๋ฏธ์ง€์ธ skeleton UI๋ฅผ ๋„์ž…ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ Table ํ˜•์‹์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์— ๋งž์ถฐ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•œ skeleton UI๋ฅผ ์ œ์ž‘ํ•˜๋ฉด์„œ ๊ฐ€์ƒ์š”์†Œ์— ๋Œ€ํ•œ ๊ธฐ์ˆ ์  ๋„์ „ ๋ฐ ํ•™์Šตํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค.



About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors