Skip to content

SeongWook-Hong/Rolling-team-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

520 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“— ๋ชฉ์ฐจ

๐Ÿ“ ํฌํŠธํด๋ฆฌ์˜ค ๊ฐœ์š”

ํ”„๋กœ์ ํŠธ๋ช…: Rolling

ํŒ€ ๋ฒˆํ˜ธ: 7ํŒ€

์ฐธ์—ฌ์ž: ๊น€์ˆ˜ํ™˜(ํŒ€์žฅ), ์–‘์„œ์—ฐ, ์œค์•„์˜, ์ตœ์›์„, ํ™์„ฑ์šฑ

์ œ์ž‘ ๊ธฐ๊ฐ„: 2024.02.24 ~ 2024.03.12

๋ฐฐํฌ์ผ: 2024.03.11

์‚ฌ์šฉ ๊ธฐ์ˆ : React, Css Modules

์‚ฌ์šฉ ์ปจ๋ฒค์…˜: Code Formatting(eslint, prettier), UI์™€ Container ์ปดํฌ๋„ŒํŠธ๋กœ ์—ญํ•  ๋ถ„๋ฆฌ, Conventional Commits

๋ฌธ์˜: shwan_2@naver.com


๐Ÿ›  ๊ธฐ์ˆ  ๋ฐ ๋„๊ตฌ

React GitHub CssModule , react-quill, Intersection Observer API, emoji-picker-react, modal-portal


๐Ÿ”— ๋ฐฐํฌ ๋งํฌ

๋ฐฐํฌ ๋งํฌ: https://rolling-4-7team.netlify.app



๐Ÿค ํŒ€์› ์†Œ๊ฐœ ๋ฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„

๊น€์ˆ˜ํ™˜

๋งก์€ ํŒŒํŠธ: post/{id} ํŽ˜์ด์ง€, Header, Card_list, Card ์ปดํฌ๋„ŒํŠธ

์ฃผ์š” ๊ธฐ๋Šฅ: ๋ฌดํ•œ ์Šคํฌ๋กค ๋ฐฉ์‹์œผ๋กœ ์นด๋“œ ๋ฐฐ์น˜, ์นด์นด์˜คํ†ก ๊ณต์œ , ์ด๋ชจ์ง€ ์ถ”๊ฐ€

์ฃผ์š” ๊ธฐ๋Šฅ ์„ค๋ช…:

  • ํŽ˜์ด์ง€์— ์ฒ˜์Œ ์ ‘๊ทผ ์‹œ 5๊ฐœ์˜ ์นด๋“œ๊ฐ€ ํ™”๋ฉด์— ๋‚˜์˜ค๊ฒŒ ํ•˜๊ณ  ์Šคํฌ๋กค์„ ๋‚ด๋ฆด ๋•Œ๋งˆ๋‹ค ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๊ฐ€ ๋Œ๋ฉด์„œ ์นด๋“œ๊ฐ€ 6๊ฐœ์”ฉ ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. Intersection Observer API๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์นด์นด์˜คํ†ก docs๋ฅผ ์ฐธ๊ณ ํ•ด api๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์นด์นด์˜คํ†ก ๊ณต์œ ํ•˜๊ธฐ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์—ˆ๊ณ  sender์™€ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ url์„ ๋„˜๊ฒจ์ฃผ์–ด ์นด์นด์˜คํ†ก ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ™”๋ฉด์— ๋‚˜์˜ค๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • emoji-picker-react ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

  • ๋ฌดํ•œ ์Šคํฌ๋กค์„ ๊ตฌํ˜„ ํ›„ post/{id} ํŽ˜์ด์ง€์—์„œ edit ํŽ˜์ด์ง€๋กœ ์ด๋™ ํ•  ๋•Œ useNavigate๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ ํ–ˆ์„ ๋•Œ ๊ธฐ์กด์˜ ์นด๋“œ list ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ์–ด์„œ useEffect ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” setState๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์Šคํฌ๋กค๋„ ๋งจ ์œ„๋กœ ๊ฐ€๊ฒŒ ๋˜์–ด ๋ถˆํ•„์š”ํ•œ ์ด๋ฒคํŠธ ํ˜ธ์ถœ์„ ๋ง‰์•˜์Šต๋‹ˆ๋‹ค. ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ ์Šคํฌ๋กค ํ–ˆ์„ ๋•Œ ์ด๋ฏธ์ง€๊ฐ€ ๊ณ„์† ์ปค์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ repeat์†์„ฑ์„ ์ฃผ๊ณ  width๋Š” 100vw๋กœ ํ•˜์—ฌ ๋ฌดํ•œ ์Šคํฌ๋กค์„ ํ•˜๋ฉด ๊ฐ™์€ ์ด๋ฏธ์ง€๊ฐ€ ํ™”๋ฉด ํฌ๊ธฐ์— ๋งž๊ฒŒ ์กฐ์ ˆ ๋˜๋ฉด์„œ ์•„๋ž˜๋กœ ๊ณ„์† ๋ฐ˜๋ณต๋˜๋ฉฐ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์‹œ์—ฐ:

service_demo_kim.mp4

์–‘์„œ์—ฐ

๋งก์€ ํŒŒํŠธ: post ํŽ˜์ด์ง€, color, font, Option ์ปดํฌ๋„ŒํŠธ

์ฃผ์š” ๊ธฐ๋Šฅ: ์ด๋ฏธ์ง€ ํŒŒ์ผ ์—…๋กœ๋“œ, ๋กค๋ง ํŽ˜์ดํผ ์ƒ์„ฑ

์ฃผ์š” ๊ธฐ๋Šฅ ์„ค๋ช…:

  • ์ปฌ๋Ÿฌ์™€ ์ด๋ฏธ์ง€ ํƒญ์— ๋”ฐ๋ผ ๋ฐฐ๊ฒฝ์„ ์„ ํƒ ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜์—ฌ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ ํƒํ•œ ์ด๋ฏธ์ง€์™€ ๋กค๋ง ํŽ˜์ดํผ ์ด๋ฆ„์œผ๋กœ ๋กค๋ง ํŽ˜์ดํผ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ํŽ˜์ดํผ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

  • ์„ ํƒํ•œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ post ์š”์ฒญ์„ ๋ณด๋‚ด์–ด ํ•ด๋‹นํ•˜๋Š” ์ด๋ฏธ์ง€ url์„ ๋ฐ›์•„์˜ค๋„๋ก ๊ตฌํ˜„ํ•˜๋Š”๋ฐ, ์ด์šฉํ•˜๋ คํ–ˆ๋˜ ์‚ฌ์ดํŠธ์˜ api์—์„œ ์ž๊พธ 429 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํŒ€์žฅ๋‹˜์˜ ๋„์›€์œผ๋กœ imagebb ์‚ฌ์ดํŠธ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๊ณ , ํ•ด๋‹น ์‚ฌ์ดํŠธ์˜ api๋ฅผ ์‚ฌ์šฉํ–ˆ๋”๋‹ˆ ๋ฌธ์ œ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  url์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์‹œ์—ฐ:

service_demo_yang.mp4

์œค์•„์˜

๋งก์€ ํŒŒํŠธ: post/{id}/edit ํŽ˜์ด์ง€, Button ์ปดํฌ๋„ŒํŠธ

์ฃผ์š” ๊ธฐ๋Šฅ: ๋กค๋งํŽ˜์ดํผ ์‚ญ์ œํ•˜๊ธฐ, ๋ฉ”์‹œ์ง€ ์‚ญ์ œํ•˜๊ธฐ

์ฃผ์š” ๊ธฐ๋Šฅ ์„ค๋ช…:

  • ์นด๋“œ์— ์žˆ๋Š” ์“ฐ๋ ˆ๊ธฐํ†ต ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ํ•ด๋‹น ๋ฉ”์‹œ์ง€ ์‚ญ์ œ API๋ฅผ ๋ณด๋‚ด๊ณ  messages state๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ญ์ œํ•˜๊ธฐ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ํ•ด๋‹น ๋กค๋งํŽ˜์ดํผ๋ฅผ ์‚ญ์ œํ•˜๋Š” API๋ฅผ ๋ณด๋‚ด๊ณ  list ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

  • ์นด๋“œ ํด๋ฆญ ์‹œ ๋ชจ๋‹ฌ์ด ๋œจ๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ์–ด ์“ฐ๋ ˆ๊ธฐํ†ต ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ๋„ ๋ชจ๋‹ฌ์ฐฝ์ด ๋œจ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. e.stopPrpagation()์„ ์‚ฌ์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์‹œ์—ฐ:

service_demo_yun.mp4

์ตœ์›์„

๋งก์€ ํŒŒํŠธ: post/{id}/message ํŽ˜์ด์ง€, TextField ์ปดํฌ๋„ŒํŠธ

์ฃผ์š” ๊ธฐ๋Šฅ: ์ด๋ฏธ์ง€ ํŒŒ์ผ ์—…๋กœ๋“œ, TextArea ๊ตฌํ˜„, ๋กค๋งํŽ˜์ดํผ ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ

์ฃผ์š” ๊ธฐ๋Šฅ ์„ค๋ช…:

  • ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์—…๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • react-quill ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด TextArea๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์„ ํƒํ•œ ์ด๋ฏธ์ง€ ํŒŒ์ผ๊ณผ ์ž‘์„ฑํ•œ ํ…์ŠคํŠธ area ๋‚ด์šฉ, ๊ด€๊ณ„, ํฐํŠธ, ์ด๋ฆ„ ๋“ฑ์„ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ post ์š”์ฒญํ•˜์—ฌ ๋ฉ”์‹œ์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

  • TextArea๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ํŠน์ • ๋ถ€๋ถ„์— ์Šคํƒ€์ผ๋ง์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์›Œ์„œ react-quill ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • react-quill์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ฉ”์‹œ์ง€๋ฅผ HTML ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์ด๋ฅผ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์—์„œ ๋ณด์—ฌ์ค„ ๋•Œ ๋ณด์•ˆ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ DOMPurify ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๋ฐฉ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ์ด๋ฏธ์ง€์˜ api ์‘๋‹ต์ด ๋Šฆ์–ด์„œ ์ด๋ฏธ์ง€๊ฐ€ ์•ˆ ๋ณด์ด๋Š” ํ˜„์ƒ์ด ์ƒ๊ฒจ ๋กœ๋”ฉ๋˜๋Š” ์‹œ๊ฐ„์— ๊ฐ ์ด๋ฏธ์ง€๊ฐ€ ๋กœ๋“œ๋  ๋•Œ๊นŒ์ง€ ๋กœ๋”ฉ ์ด๋ฏธ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋„๋ก ์„ค์ •ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์‹œ์—ฐ:

service_demo_choi.mp4

ํ™์„ฑ์šฑ

๋งก์€ ํŒŒํŠธ: ๋ฉ”์ธ ํŽ˜์ด์ง€, list ํŽ˜์ด์ง€, Modal, Toast, Badge ์ปดํฌ๋„ŒํŠธ

์ฃผ์š” ๊ธฐ๋Šฅ: ๋ฒ„ํŠผ ํด๋ฆญ์œผ๋กœ ์Šคํฌ๋กค ๊ตฌํ˜„

์ฃผ์š” ๊ธฐ๋Šฅ ์„ค๋ช…:

  • ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ํ„ฐ์น˜ํ•˜์—ฌ ์Šคํฌ๋กค์ด ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

  • ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ์Šคํฌ๋กค ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜์—ฌ useState๋ฅผ ํ†ตํ•ด ์‹œ์ž‘์œ„์น˜ ๋„๋‹ฌ๊ฐ’๊ณผ ๋งˆ์ง€๋ง‰์œ„์น˜ ๋„๋‹ฌ๊ฐ’์„ ๋‹ค๋ฃจ์–ด ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ์Šคํฌ๋กค์ด ๋ถ€๋“œ๋Ÿฝ์ง€ ์•Š์•˜๊ณ  ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด scrollBy ๋ฉ”์†Œ๋“œ์˜ smooth ์˜ต์…˜์„ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ํ™œ์šฉํ•œ ๊ฒฐ๊ณผ ์‹ค์ œ๋กœ ์Šคํฌ๋กค์ด ์™„๋ฃŒ๋˜๊ธฐ๊นŒ์ง€ ์•ฝ๊ฐ„์˜ delay๊ฐ€ ์ƒ๊ฒผ๊ณ  ๊ทธ๋กœ ์ธํ•ด ์Šคํฌ๋กค ์œ„์น˜๋ฅผ ์ œ๋Œ€๋กœ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐœ์ƒํ•˜๋Š” delay๋งŒํผ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์Šคํฌ๋กค ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๋„๋ก setTimeoutํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์‹œ์—ฐ:

service_demo_hong.mp4

๐Ÿ™‹ Q&A

Q&A: https://few-seed-7cb.notion.site/Q-A-16d6a36f426c4d44ba27806c10fb107e

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors