๐ŸŒ [project #2] Jigu-tory #5

soor.devยท2021๋…„ 7์›” 15์ผ
0

Project

๋ชฉ๋ก ๋ณด๊ธฐ
7/8

๋‹ค์Œ ์ฃผ ํ™”์š”์ผ์ด๋ฉด ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋„ ๋์ด๋‹ค. ์•ˆ ๋˜๋Š” ๊ธฐ๋Šฅ์€ ์šฐ์„  ๋ฒ„๋ฆฌ๊ณ  ๊ฐ€๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ง€๋‚œ ์ฃผ ๊ธˆ์š”์ผ๋ถ€ํ„ฐ ๊ณ ๋ฏผํ•˜๊ณ  ํ•ด๊ฒฐ์ด ์•ˆ ๋˜๋˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ ์ค‘๊ฐ„์— ์„œ๋ฒ„ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ ์ˆ˜์ •๋„ ํ•ด ๋ณด๋ฉด์„œ ํ•ด๊ฒฐํ•˜๋ ค ๋…ธ๋ ฅํ–ˆ์œผ๋‚˜ ์‹คํŒจ์—์„œ ์ ๋‹นํ•œ ์ ˆ์ถฉ์•ˆ์„ ์ฐพ์•˜๋‹ค. ๋ง๋”ํ•œ ๊ธฐ๋Šฅ๊ตฌํ˜„์€ ์•ˆ ๋์ง€๋งŒ ๋งŽ์ด ์‹œ๋„ํ•ด ๋ดค๊ณ , ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„์ด ๋๋‚œ ํ›„์—๋„ ์ถฉ๋ถ„ํžˆ ๊ณ ๋ฏผํ•ด ๋ณผ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์„ ํƒ๊ณผ ์ง‘์ค‘ ๐Ÿ‘๐Ÿป

Loading spinner

์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๋งŒ๋“ค์—ˆ๋˜ ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ! ์—ฌ๋Ÿฌ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋ฅผ ๋„ฃ์–ด๋ณด๋‹ค๊ฐ€ ๊ฒฐ๊ตญ์—๋Š” ๋งŒ๋“ค์–ด์ ธ์žˆ๋Š” gif ๋ฅผ ์ด์šฉํ–ˆ๋‹ค. ์—ญ์‹œ ๋งŒ๋“ค์–ด์ง„๊ฒŒ ์ ค ๊น”๋”ํ•˜๊ณ  ์˜ˆ์˜๋‹ค ๐Ÿค—

์Šคํ”ผ๋„ˆ๋ฅผ ์‚ฌ์šฉํ•  ์ปดํฌ๋„ŒํŠธ์— ๋กœ๋”ฉ์ƒํƒœ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ , fetch ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ํ•จ์ˆ˜์— ๋„ฃ์–ด์ฃผ๋ฉด ๋ !

๋‚˜์˜ ๊ฒฝ์šฐ๋Š” ํด๋ฆญํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š”๋ฐ 2-3์ดˆ ์ •๋„ ์†Œ์š”๋˜์–ด ๊ทธ ์‹œ๊ฐ„์— ์Šคํ”ผ๋„ˆ๋ฅผ ๋Œ๋ ธ๋‹ค. ํด๋ฆญํ•˜๋ฉด isLoading ์„ true ๋กœ ์„ค์ •ํ•˜์—ฌ ์Šคํ”ผ๋„ˆ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ๋ฐ›์•„์˜จ ์‹œ์ ์— isLoading ์„ false ๋กœ ์„ค์ •ํ•˜์—ฌ ์Šคํ”ผ๋„ˆ๋ฅผ ์—†์• ๋Š” ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

์—ญ์‹œ ์‹œ๊ฐ์  ํšจ๊ณผ๊ฐ€ ๋“ค์–ด๊ฐ€๋‹ˆ ํ›จ์”ฌ ์˜ˆ์˜๊ณ  ๊ท€์—ฌ์› ๋‹ค. ๊ท€์—ฌ์šด๊ฑฐ ์ตœ๊ณ  ๐Ÿค

import DotSpinner from '../components/DotSpinner'; // ์Šคํ”ผ๋„ˆ ๋ฐ›์•„์˜ค๊ณ 

const [isLoading, setIsLoading] = useState(false);  // ๋กœ๋”ฉ ์ƒํƒœ ๋งŒ๋“ค๊ณ ,

const handleClickNum = () => {
  setIsLoading(true) // ํด๋ฆญํ•˜๋ฉด ๋ฐ”๋กœ ์Šคํ”ผ๋„ˆ ๋ณด์—ฌ์ฃผ๊ธฐ
  
  axios.post(...).... // ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๋Š” ์ค‘..

  .then(() => {
  	setIsLoading(false); // ๋‹ค ๋ฐ›์•„์กŒ์œผ๋ฉด ์Šคํ”ผ๋„ˆ ์—†์• ๊ธฐ	
  }) 
}

RWD ๋ฐ˜์‘ํ˜• ์›น ๋””์ž์ธ


๋Š˜ ํ•ด์•ผ์ง€ ํ•ด์•ผ์ง€ ํ•˜๋ฉด์„œ ์€๊ทผํžˆ ๋ฏธ๋ค„์กŒ๋˜ ๋ฐ˜์‘ํ˜• !! ๋“œ๋””์–ด ํ–ˆ๋‹ค. ๊ตฌ์กฐ๊ฐ€ ํƒ„ํƒ„ํ•˜๋‹ค๋ฉด ํฌ๊ฒŒ ์–ด๋ ต์ง€ ์•Š์€ ์ž‘์—…์ด๋ผ ๋Š๊ผˆ๋‹ค.

๋‚˜๋Š” mypage ์Šคํƒ€์ผ๋ง์„ ๋งก์•„์„œ ํ–ˆ๊ณ , mypage๋Š” ์œ ์ € ๋ ˆ๋ฒจ ๋ฐ ๋ฑƒ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ถ€๋ถ„ ๋ฐ ๋‹ค๋ฅธ ์„น์…˜๋“ค๋กœ ๋‚˜๋ˆ ์ ธ ์žˆ๋Š”๋ฐ, ๊ทธ ์ค‘ ๋ฑƒ์ง€ ๋ถ€๋ถ„์€ ๋‹ค๋ฅธ ํŒ€์›๋ถ„์ด ์ž‘์—…ํ•˜์‹  ๋ถ€๋ถ„์ด๋ผ ์‚ฌ์‹ค ๊ตฌ์กฐ๋ฅผ ์™„์ „ ๋‹ค ๋œฏ์—ˆ๋‹ค.. ๋‹ค๋ฅธ ๋ถ„์ด ์ง  ๊ตฌ์กฐ์— ์Šคํƒ€์ผ๋ง์„ ์ž…ํžˆ๋Š” ๊ฒƒ์€ ์ฐธ ์–ด๋ ต๋‹ค .. ๊ทธ๋ž˜๋„ ๋‚˜๋ฆ„ html structure ์„ ์งœ๋Š”๋ฐ๋Š” ์ž์‹ ์žˆ์–ด์„œ (..?) ์ž์‹ ์žˆ๊ฒŒ ๋‹ค ๋œฏ์–ด๋ฒ„๋ ธ๋‹ค.

๊ทธ๋ฆฌํ•˜์—ฌ mypage ๋ฐ˜์‘ํ˜•๋„ ๋ฝ€์งํ•˜๊ฒŒ ์™„์„ฑํ–ˆ๋‹ค !! ๊น”๋”ํ•˜๋ฉด์„œ๋„ ๊ท€์—ฌ์šด UI ๋ฅผ ์„ ํ˜ธํ•˜๊ธฐ์— ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฐฉํ–ฅ๋Œ€๋กœ ๋””์ž์ธ์ด ๊ท€์—ฝ๊ฒŒ ๋‚˜์˜จ ๊ฒƒ ๊ฐ™์•„์„œ ๋งŒ์กฑ์Šค๋Ÿฝ๋‹ค.

์ด๋ฒˆ ๊ธฐํšŒ์— media query ๋„ ์จ๋ณด๊ณ , ๋ฐ˜์‘ํ˜• ์›น ๋””์ž์ธ์„ ์œ„ํ•ด ์–ด๋–ค ์ ์„ ๊ณ ๋ คํ•ด์•ผํ•˜๋Š”์ง€๋„ ์ƒ๊ฐํ•ด ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ํŽ˜์ด์ง€๋Š” ๋ชฐ๋ผ๋„ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ์ด ํฐ ๋ชฉ์ ์ธ ์„œ๋น„์Šค๋ผ๋ฉด ์•„์˜ˆ ์™€์ด์–ดํ”„๋ ˆ์ž„๋„ ๋”ฐ๋กœ ๋‚˜๋ˆ„๊ณ , ๋”ฐ๋กœ ์ฝ”๋“œ๋ฅผ ์ œ์ž‘ํ•˜๋Š”๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋ž˜์•ผ ๋” ๊น”๋”ํ•˜๊ฒŒ ๋–จ์–ด์ง€๋Š” ๋””์ž์ธ์„ ๋‚ด๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ์ œ์•ฝ์—†์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

์ธํŠธ๋กœ ํŽ˜์ด์ง€

๊น”๋”ํ•˜๋ฉด์„œ๋„ ์„ธ๋ จ๋˜๊ณ , ๋ณต์žกํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋น„์–ด๋ณด์ด์ง€ ์•Š๋Š”.. ๊ทธ๋Ÿฐ ๋žœ๋”ฉํŽ˜์ด์ง€. ๋”ฑ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์กฐ๊ฑด์ด์ง€๋งŒ ์ฐธ ์–ด๋ ต๋‹ค ใ…Žใ…Žใ…Ž

์žˆ๋Š” ๋ฏธ์ ๊ฐ๊ฐ์„ 1000% ๋Œ์–ด์˜ฌ๋ ค ๋งŒ๋“œ๋Š” ์ค‘์ด๋‹ค. ์•„์ง๊นŒ์ง€ ๋ง˜์— ๋“ ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ๋ฉ”์ธ ์ปฌ๋Ÿฌ๋ฅผ ๋ฏธ๋ฆฌ ์ž˜ ๋ฝ‘์•„๋†”์„œ ์ƒ‰ ์กฐํ•ฉ์ด ์ˆ˜์›”ํ–ˆ๋‹ค. ์˜ค๋Š˜ ๋งก์€ ๋ถ€๋ถ„์€ ๋‹ค ๋๋‚ด๊ณ  ์ž๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ๋งˆ์ง€๋ง‰ ํ•œ ์„น์…˜์ด ์ข€ ์–ด๋ ต๋‹ค. ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•ด์•ผํ•  ์ง€ ๊ณ ๋ฏผํ•˜๋Š” ์‹œ๊ฐ„์ด ์ฐธ ๊ธธ๋‹ค.

์˜ค๋Š˜ ํ•  ์ผ

  • ๋žœ๋”ฉํŽ˜์ด์ง€ ๋‚ด ํ• ๋‹น๋Ÿ‰ ๋งˆ๋ฌด๋ฆฌ
  • nav bar ๋ฐ˜์‘ํ˜•์—์„œ ๋ชจ๋‹ฌ css ๊นจ์ง€๋Š” ์—๋Ÿฌ ์žก๊ธฐ

๋ธ”๋กœ๊น…

  • ์ด๋ฏธ์ง€ gif ๋กœ ๋ฐ”๊ฟ”์„œ ์žฌ์—…๋กœ๋“œ ํ•˜์ž !

0๊ฐœ์˜ ๋Œ“๊ธ€