๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง ๊ฐ๋ฐ ํ๊ณ
์๋
ํ์ธ์ :)
์ ๋ ๊ตฌ๋ฆ์ 1๋
์ ๋ ์ฌ์ง ์ค์ธ Kenny
์
๋๋ค.
๊ทผ ํ ๋ฌ ์ ๋ ์ฌ๋ด์์ ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง
ํ๋ก์ ํธ์ ๋ํ ๊ฐ๋ฐ์ ํผ์ ์งํํ๋๋ฐ, ๊ด๋ จํด์ ํ๊ณ ๋ฅผ ํ๋ ค๊ณ ํฉ๋๋ค.
๋จผ์ ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง๋ ์๋ ๋๋ฉ ํ์ด์ง ๋งํฌ์ ๋ค์ด๊ฐ์๋ฉด ์ด๋ค ์๋น์ค์ธ์ง ์ฝ๊ฒ ์์ค ๊ฒ ๊ฐ์์.
๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง ๋๋ฉ ํ์ด์ง ๋งํฌ
(14์ผ ๋ ์ ์ ์คํ์ด๊ณ , ์ ๋ ์ด์ฌํ ์ฌ์ฉ์๋ค์ ์ํด ๋จ์ Ui ๊ฐ๋ฐ ๋ฐ ๊ฒ์๋ฅผ ์งํํ๊ณ ์์ต๋๋ค.)
๐ ํ๊ณ ์์
ํผ์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๋ ๊ฒ
์ ๋ ํ์คํ ์์ง๋์ด๋ก ์
์ฌํ์ง๋ง ๋ค๋ค ๋ฐฑ์๋ ์ฑํฅ์ด ๊ฐํด ํ๋ก ํธ์๋๋ฅผ ์ฃผ๋ก ์์
ํ์๋๋ฐ์,
์ด๋ฒ์ ์๋ก์ด ์ฌ์
๋ค์ด ์๊ฒจ๋๊ณ ๊ฐ์ ํ ์ฌ๋๋ค์ด tf๋ก ๋น ์ง๋ฉด์ ์ธ์์ด ๋ถ์กฑํ ์ํ๋ผ ๋ฐฑ์๋๊น์ง ํผ์ ์งํํ๊ฒ ๋์ต๋๋ค.
ํผ์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๋ ๊ฑด ์๋นํ ์ธ๋กญ๋ค๋ ๊ฑธ ๋๊ผ์ต๋๋ค.
์ค์ ๋ก ๋ฐฉ๋ํ ์์ ๊ธฐํ์ ๋ํด ๊ฐ๋ฐ์ ๋ฏธ์น ๋ฏ์ด ์งํํ๋ฉฐ ๋ฒ์์๋ ์ฌ ๋ปํ์ด์ ๐ฅฒ
๊ทธ๋์ ์ต์ 1๋ช ์ ๊ฐ๋ฐ์ ๋๋ฃ์ ํจ๊ป ํ์ ํ๋๋ฐ, ํผ์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋ช ๊ฐ์ง ๋จ์ ์ด ๋ณด์์ต๋๋ค.
- ์ฃผ๋์ด์์๋ ํผ์ ์ฑ
์์ง๊ณ ๊ฐ๋ฐ ์ผ์ ์ ์ฐ์ ํ๊ณ ์คํํด์ผ ํจ
- ์ฌ์
์ ๋ํ ์ฝ๋ ๋ฆฌ๋ทฐ์ด๋ฅผ ๋๊ตฌ๋ฅผ ๊ฑธ์ด์ผ ํ ์ง ๊ณ ๋ฏผ...
- ํผ์ ํ๋ฏ๋ก ๋ฒ๊ทธ๊ฐ ๋๋ฉด ์จํต ๋ด ์ฑ
์์ด๋ผ๋ ์๋ฐ๊ฐ => ์ฃผ๋ง ๊ทผ๋ฌด๊น์ง ํ๋ฉด์ QA๋ฅผ ์๋ฒฝํ๊ฒ ์งํํ๊ณ ์ถ์ด์ง..
๊ทธ๋๋ ๊ธฐํ, ๋์์ธ, ๊ฐ๋ฐ ํ๋ก์ธ์ค๊ฐ ์ํํ๊ฒ ๋์๊ฐ ์๊ฐ์ ์ผ๋ก ์ฌ์ ๊ฐ ์กฐ๊ธ ์์๋ค๋ ๊ฒ์ ์ ๋ง ๋คํ์ด์์ต๋๋ค.
๋ฐฑ์๋, ํ๋ก ํธ์๋ ํ ๊ฑฐ ์์ด DB ์ค๊ณ
, api ๊ฐ๋ฐ
, ๊ธฐ๋ฅ ๊ฐ๋ฐ
, Ui ๊ฐ๋ฐ
์ ํ๋ํ๋ ์๋ก ๋ง๋ค์ด๊ฐ๋ฉฐ ์ ๋ง ๋ฐ์ ํ ๋ฌ์ ๋ณด๋ธ ๊ฒ ๊ฐ์์.
์์ง ๊ฐ๋ฐ์ด ๋๋์ง ์์์ง๋ง,
์ฌ์ ์๋ฆผ ์คํ๋ ์ดํ ๋ง์ ์ฌ์ฉ์๋ค์ด(๋ฌด๋ ค 500๋ช
์ด์) ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง ์ฌ์ ์ ์ฒญ
์ ํด์ฃผ์
์ ๋ฟ๋ฏํ ๊ฒ ๊ฐ์์.
์ธ๋ก์ด ์ฝ๋ ๋ฆฌ๋ทฐ
์๋ฌด๋๋ ๊ฐ๋ฐ์๋ค์ด ๋ณธ์ธ์ด ํด๋น๋์ง ์๋ ํ๋ก์ ํธ์ ๋ชจ๋ ๊ธฐํ์ ์ดํดํ๊ณ ์๋ฒฝํ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํ๊ธฐ์ ๋ฌด๋ฆฌ๊ฐ ์์ต๋๋ค.
์์ ๊ฐ์ ๋ฆฌ๋ทฐ ๋ฐฉ์์ ์๊ฐ ์ง์ฒด๋ก ์ด์ด์ง๋ฉฐ, ์๋ก์๊ฒ ํผ๊ณคํ ์ํฅ์ ์ค ์ ์์ด ์กฐ๊ธ ์กฐ์ฌ์ค๋ฌ์ ์ต๋๋ค.
๋คํํ ์์๋ฆฌ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๋๋ฃ๋ถ์ด ๊ณ์
์ ๊พธ์คํ ์ฑ๋ฆฐ์ง ์ด์ผ๊ธฐ๋ฅผ ์๋ก ํ๋ฉฐ ๋ฆฌ๋ทฐ๋ ๊ทธ๋๋ง ์์ํ๊ฒ ์งํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์์ง ๋๊ตฐ๊ฐ๊ฐ ๋ฆฌ๋ทฐํ PR์ด 7๊ฐ๊ฐ ์์ฌ์์ง๋ง ์๋ง ๋๋ฃ๋ถ๋ค์ด ์ฝ๋ ๋ ๋ฒจ์ ์ธ ๋ถ๋ถ์ ๋ํด ๋ฆฌ๋ทฐ๋ฅผ ์ํด์ฃผ์ค ๊ฑฐ๋ผ ๋ฏฟ์ต๋๋ค. ๐
์ค์ํ ๊ฑด QA
์๋ฌด๋๋ ์ ์ ๋ ๊ธฐ์
์๊ฒ ์ค์ํ ๊ฑด ์ฝ๋ ๋ ๋ฒจ๋ณด๋ค QA์
๋๋ค.
์ฝ๋์ ํ์ง์ด ์๋ฒฝํด๋ ๊ธฐ๋ฅ์ด ์ ์ ๋์ํ์ง ์์ผ๋ฉด ์ ๋ง ๋ฌด์๋ฏธํ ์ฝ๋๊ฐ ๋์ด๋ฒ๋ฆฌ๋๊น์.
์ด๋ฒ์ ๊ฐ๋ฐํ๋ฉด์ ๋๋์ฑ QA๋ฅผ ๋ง์ด ์งํํ ๊ฒ ๊ฐ์์.
๋ค์ํ ๋ชจ๋ฌ์ ๊ฐ๋ฐํ๋ฉฐ ๊ณ์ DB ์ญ์ ์ฝ์
์ญ์ ์ฝ์
์ญ์ ์ฝ์
.........
๊ณ์ ๋ฐ๋ณตํ๋ฉฐ ์ผ์ด๋ ์ ์๋ ์ผ์ด์ค๋ค์ ๋ํด ์ฌ๋ ์๊ฒ ์์ฒด์ ์ผ๋ก QA ํ๋ ๊ฒ ๊ฐ์์.
โ๏ธ ์๋๋ ๋ค์ํ QA ๋ฆฌ์คํธ๊ฐ ๋์ต๋๋ค.........
api์ ๊ฒฝ๋ก ๊ฐ์ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์๋ฌ๊ฐ ๋ฌ์ ๋ ์ด๋ป๊ฒ ๋์๋๋์ง,
์๋ฌ ์ฒ๋ฆฌ ๋ฐฉ์์ด ์ฌ๋ฐ๋ฅธ์ง,
์๋ฒ ๊ธฐ์ค ๋ ์ง์ ๋ง๊ฒ ๋ผ์ด๋๊ฐ ์์๋๋ก ์ ์ด๋ฆฌ๋์ง,
์ฃผ๋ง์ ์ ์ธํ๊ณ ๋ผ์ด๋๊ฐ ์ ๋์๋๋์ง,
์ฃผ๋ง์ผ ๋ ๊ธ์์ผ ๋ทฐ๋ก ์ ๋ณด์ด๋์ง,
์ฌ์ฉ์๊ฐ ๋ก์ปฌ ์๊ฐ์ ๋ฐ๊ฟ๋ ๊ธฐ๋ฅ์์ผ๋ก ์๋ฒ ์๊ฐ ๊ธฐ์ค์ผ๋ก ์ ๋์ํ๋์ง,
์๋ฒ ๋ก์ง์ด ๋ถํ๋ฅผ ์ผ์ผํค์ง ์๋์ง,
์ฑ๋ฆฐ์ง ๋ฌธ์ ๊ณต๊ฐ ๋ ๊ธฐ์ค 48์๊ฐ ์์ ํ์์ ๋ ์คํฌํ๊ฐ ์ ์ ๋ฐ๊ธ๋๋์ง,
47์๊ฐ 59๋ถ 59์ด์ ์ ์ถํ์ ๋ ๋ฐ๊ธ์ด ๋๋์ง,
48์๊ฐ ์ดํ ์ ์ถํ์ ๋ ๋ฐ๊ธ์ด ๋์ง ์๋์ง,
์ ์ถ ๊ด๋ จ ์ด๋ฒคํธ ๋ชจ๋ฌ๋ค์ด ์ฌ๋ฌ ๋ฒ ๋จ์ง ์๋์ง,
์ค์ผ๋ ํค Ui๊ฐ ์ฌ์ฉ์ ์นํ์ ์ธ์ง, ๋ชจ๋ ๋ฐ์ํ์ ๋ํด ์ ๋์๋๋์ง,
๋ชจ๋ ๋ฐ์ํ์ ๋ํด Ui๊ฐ ์ ๋์๋๋์ง,
์คํฌํ์ ๋ฐ๋ผ ์ ํํ๊ฒ ๋ ๊ณ ๋ค์ด ์ ๋ณด์ด๋์ง,
ํด์ค ๊ฐ์ข ์คํ Alert๊ฐ ์ค์ 10์ ๊ธฐ์ค, ์ฑ๋ฆฐ์ง ๋ง๋ฌด๋ฆฌ ๊ธฐ์ค์ผ๋ก ์ ๋จ๋์ง,
๋ฑ๋ฑ ๋ฑ๋ฑ ๋ฑ๋ฑ.........
๊ธฐํ์์๊ฒ ๊ณ์ ์ฐพ์๊ฐ ๋ฌผ์ด๊ฐ ๋ณด๋ฉฐ ๊ฐ๋ฐ์ ์งํํ๊ณ ,
์ดํ ์๋ํ ๋๋ก ๋์ํ๋์ง ์ ๋ง ํผ์์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํด ๋ ๋ง์ด QA๋ฅผ ์งํํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์๋ง ํผ์ ๊ฐ๋ฐํจ์ ๋ฐ๋ฅธ ๋ถ์ํจ์ด ์ปธ๋ ๊ฒ ๊ฐ์์.
์ฝ๋ ์ค๊ณ
์ด๋ฒ ์ฑ๋ฆฐ์ง๋ ํนํ ๋ชจ๋ฌ์ด ๋ง์๋ฐ์,
- ์ฌ์ ์๋ฆผ ๋ชจ๋ฌ
- ์ฑ๋ฆฐ์ง ์์ ํ ๋ฐ๋ ์ ๋ณด ์์ง ๋ชจ๋ฌ
- ํ์ต ์ผ๊ธฐ ๋ชจ๋ฌ
- ์ค๊ฐ ๋ฐ ์ต์ข ์ค๋ฌธ์ ๋ฐ๋ ๋ชจ๋ฌ (์์ ?)
- ์ฑ๋ฆฐ์ง ๋ฌธ์ ๋ฅผ ์ ์ถํ์ ๋ ์ผ์ด๋๋ ๋ค์ํ ์ผ์ด์ค๋ค์ ๋ํ ๋ชจ๋ฌ
๋ฑ๋ฑ...
๋ชจ๋ฌ ๊ฐ๋ฐ์๋ผ ๋ถ๋ฆด ์ ๋๋ก ๋ชจ๋ฌ์ ๋ํ ์ผ์ด์ค๊ฐ ์์ฃผ์์ฃผ ๋ง๊ณ ๊ธฐ๋ฅ ๋ํ ๋ชจ๋ ๋ฌ๋ผ ๊ตฌํํ๋ ๋ฐ ๊ณ ๋ฏผ์ ๋ง์ด ํ๋ ๊ฒ ๊ฐ์์.
์ผ๋จ ๋น์ฐํ๊ฒ๋ ๊ด์ฌ์ฌ๋ณ๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฆฌํด์ ์ ์ํ๊ณ , ๊ณตํต์ ์ผ๋ก ๋บ ์ ์๋ ์ปดํฌ๋ํธ๋ค์ ๋ชจ๋ ๋บ ๊ฒ ๊ฐ์์.
์ ์ฌ์ง์ ์ด๋ฒ์ ๊ฐ๋ฐํ ์ฌ์ ์๋ฆผ ๋ชจ๋ฌ์ธ๋ฐ์.
์ ๋ชจ๋ฌ์ ํน์ง์ Footer์ Step์ด ์๊ณ , ๋ค์ ๋ฒํผ disabled ๊ฒ์ฆํ๋ ๋ถ๋ถ์ด Step๋ง๋ค ์๊ณ ,
๋ชจ๋ฐ์ผ์ผ ๋ ์ ์ฒด์ ์ธ ๋ทฐ ๋ฐ ๋์์ธ ์์ฒด๊ฐ ๋ฐ๋๋๋ก ์ค๊ณ๊ฐ ๋์ด ์์ต๋๋ค.
์๋ง ์ ๋ชจ๋ฌ์ ์์ฃผ ์ฐ์ผ ๊ฒ ๊ฐ์ ๋ฐ๋ก StepModal
์ด๋ผ๋ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ์ต๋๋ค.
๊ฐ Step ๋ณ view
, data
, validation
์กฐ๊ฑด ๋ฑ์ ๋ํด Props๋ก ์ ๋ฌ๋ฐ๊ณ ์ ์ถ(Post) ๋๋ Step ์,
๋ง์ง๋ง ํ์ด์ง์ ์ด์
๋ฒํผ์ ๋ฃ์ ๊ฑด์ง ๋ฑ๋ฑ ์ต๋ํ ์ ์ฐํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ค๊ณํ ๊ฒ ๊ฐ์์.
์ค์ ๋ก ์ฌ์ฉํ๋ ๋ฐ๋ Step๋ณ๋ก ๋ฐ์ดํฐ ์ค๊ณ๋ฅผ ์๋ง๊ฒ ํด์ผ ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ง๋ง,
์๋ง ์ฒ์ ์ฌ์ฉํ์๋ ๋ถ๋ค๋ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ง ์ ์๋๋ก ๊ด๋ จํด ์ฃผ์์ผ๋ก ์ ์์ฑํด ๋์ ๋ฌด๋ฆฌ๋ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง ํ๋ก๊ทธ๋๋ฐ ๋ฌธ์ ์์ ๋ต์์ ์ ์ถํ์ ๋ ๋ชจ๋ฌ์ ๋ค์ํ ์ ๋๋ฉ์ด์
(BX) ์์๊ฐ ๋ง์๋ฐ์.
๊ด๋ จํด์๋ ํ์
์ ๋ํด ๋ชจ๋ฌ ์ ๋๋ฉ์ด์
์ ์ค๊ณํ๋ ๊ฒ๋ ์ฌ๋ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ณตํต ์ปดํฌ๋ํธ ๋ถ๋ฆฌ
์ฌ์ค ๋ ๋ฒ์งธ ์ฑ๋ฆฐ์ง๊น์ง๊ฐ ๋ง์ง๋ง์ด๋ผ๊ณ ๋ชจ๋๊ฐ ์์ํ์์ต๋๋ค.
๊ทธ๋์ ๊ธฐ๊ฐ์ด ์๋ ์ผํ์ฑ ํ๋ก์ ํธ์ ์ปดํฌ๋ํธ๋ค์ ๋ํ ๊ณตํต ์ปดํฌ๋ํธ๋ฅผ ํฌ๊ฒ ๊ณ ๋ คํ์ง ์์์ต๋๋ค.
์ฑ๋ฆฐ์ง๋ง๋ค ์คํฌํ ์ด๊ฐ์๋ ์คํ์ผ์ด ๋ฌ๋๊ณ , ์ด๋ฅผ ๊ณตํตํ์ํค๊ธฐ์ ๊ฐ๋ฐ ๊ธฐ๊ฐ์ด ๋๋ฌด ์งง์์๊ฑฐ๋ ์.
https://level.goorm.io/l/challenge/algorithm-monday-highscool-1
์ค์ ๋ก ํ์ด์ค์ฟจ ์ฑ๋ฆฐ์ง๋ ๊ฑฐ์ 7์ผ ๋ง์ ๋ง๋ค์ด์ง ์ฑ๋ฆฐ์ง์ ๋๋ค.๐
์ด๋ฒ์ 3๋ฒ์งธ ๊ฐ์ต๊ณ , ์ดํ์๋ ๊ณ์ ์ฑ๋ฆฐ์ง๋ฅผ ์งํํ ๊ฒ ๊ฐ์ ๊ณตํต๋๋ ์ปดํฌ๋ํธ๋ค์ ๋ชจ๋ ๊ณตํตํ๋ฅผ ๋ชฉํ๋ก ์์ ํ์ต๋๋ค.
์ ์คํฌํ ๊ด๋ จ ์บ๋ฌ์ ์ ๋ชจ๋ฐ์ผ ๋ฐ์ํ์ผ ๋ ์บ๋ฌ์ , PC ๋ฐ์ํ์ผ ๋ ์ผ๋ฐ ๋ทฐ๋ก ๋ณด์ ๋๋ค.
PC ๋ทฐ => ์คํฌ๋กค => ์บ๋ฌ์ ํ์์ผ๋ก ๊ตฌํ๋์ด ์์ด์.
์ด์ 3๊ฐ์ ์ฑ๋ฆฐ์ง์ด๋ฏ๋ก ๋ชจ๋์๊ฒ ์ ์ฉ์ด ๋๋๋ก ํ๋์ ์ปดํฌ๋ํธ๋ฅผ ์ ์ฐํ๊ฒ ๊ตฌํํ๊ณ , ์ด ์คํฌํ ๊ฐ์ ๋ช ๊ฐ๊ฐ ์ค๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์, ์ด ๊ฐ์, Dim ์ฒ๋ฆฌ ๋ฑ๋ฑ ๋ชจ๋ ๋์ํ ์ ์๋๋ก ์ค๊ณํ์ต๋๋ค.
์ฌ์ฉํ๋ ๋ถ๋ถ์์๋ ์๋ฒ์์ ๋ฐ์์จ ์ฐ๋ฆฌ๊ฐ ์ ํด๋์ ์คํฌํ ์ปจ๋ฒค์ ์ ์คํฌํ๋ง ๋๊ฒจ์ฃผ๋ฉด ์๋์ผ๋ก ๋๊ฒ ์ฌ์ฉ์ฑ์ ํฌ๊ฒ ๋๋ ธ์ต๋๋ค.
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ์ํ์ ๋ฐ๋ผ PC ๋ทฐ => ์คํฌ๋กค => ์บ๋ฌ์ ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
1. ์คํฌํ(๋ธ๋ก) ๊ฐ์๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ๋ฌ์ฑํ๋ฉด ๋ฑ์ง ๋ทฐ๊ฐ ๋ฐ๋๋ ํ์
2. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฒซ ๋ฒ์งธ ์ฌ์ง์ ๋๋ง ์ ๊ณตํ ๊ฑฐ๋
๋ ๊ฐ๋ ๋ญ๊ฐ ๊ฐ์ ์ปดํฌ๋ํธ์ธ ๊ฒ ๊ฐ์๋ฐ, ์ ๋ ๊ฐ์ ์ญํ ์ด ๋๋ ์ ธ ์๋ ๊ฒ ๊ฐ์ ๊ณ ๋ฏผ์ด ๋ง์๋๋ฐ์.
๊ทธ๋๋ ๋๋ฌด๋ ๊ฐ์ view๊ณ props๋ก ํด๊ฒฐํ ์ ์๋ ๋ถ๋ถ์ธ ๊ฒ ๊ฐ์์ ๊ณตํตํ๋ฅผ ์์ผฐ์ต๋๋ค.
๋ก๋ฉ ์ค๊ณ
์ค์ผ๋ ํค Ui ์ฒ๋ฆฌ์ ๋ํด์๋ ํ์์๊ฒ ๊ณต์ ๋ฐ์ ๋ด์ฉ์ด์ง๋ง ์ข์ ๋ด์ฉ์ด๋ผ ๊ณต์ ํ๊ณ ์ถ๋ค์!
์ฌ์ฉ๋จ์์ Suspense, Loading์ฒ๋ฆฌ๋ฅผ ํ๋ ๊ฒ ์๋ ์ปดํฌ๋ํธ ์์ฒด์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค.
- index.tsx
- MissionContainer.tsx
- MissionContainer.scss
- MissionContainer.loading.tsx
MissionContainer.loading.tsx
์๋ ๋น์ฐํ๊ฒ๋ ์ค์ผ๋ ํค Ui๊ฐ ์ ์๋์ด ์์ต๋๋ค.MissionContainer.tsx
์๋ ๋ฉ์ธ ์ปดํฌ๋ํธ ๊ธฐ๋ฅ๋ค์ด ์ ์๋์ด ์์ต๋๋ค.
์์ ๊ฐ์ด ์ค๊ณํ๊ณ ๋ง์ฝ suspense๊ฐ ์๋ react-query๋ฅผ ์ฌ์ฉํ๋ค๋ฉด
// index.tsx
import React from 'react';
// ์์ useQuery
import { useGetExams } from '@/query-hooks/....';
// components
import MissionContainerComponent from './MissionContainer';
import MissionContainerLoading from './MissionContainer.loading';
const MissionContainer = ({...props}) => {
cosnt { isLoading } = useGetExams();
return isLoading ? <MissionContainerLoading /> : <MissionContainerComponent {...props} />
}
์์ ๊ฐ์ด ์ ์ํด์ ์ฌ์ฉํ๋๋ฐ์!
useGetExam์ useQuery๋ฅผ return ํ๋ ํจ์์ ๋๋ค.
์ ํฌ๋ sass๋ฅผ ์ฌ์ฉํด์ loading์ด๋ ๊ธฐ๋ฅ ์ปดํฌ๋ํธ๊ฐ ๊ฐ์ด className๋ ๊ณต์ ํด
๊ธฐ๋ณธ์ ์ธ ๋ ์ด์์์ ๋์ผ์ ๊ฐ์ ธ๊ฐ ์ค์ผ๋ ํค Ui๋ฅผ ๊ฐ๋ฐํ๋๋ฐ๋ ํจ์ฌ ์์ํ์ต๋๋ค.
suspense๋ฅผ ์ฌ์ฉํ ๋๋ ์์ฒ๋ผ index.tsx
๋MissionContainer.tsx
๋ด๋ถ์์ export default
๋ถ๋ถ์ ์ ์ํด๋ ์ข์ ๊ฒ ๊ฐ์์.
์ ๋ฆฌ
์ฒ์์ด์ ๋ง์ง๋ง์ผ๋ก ํ์ฌ์์ ํผ์ ๊ฐ๋ฐํ๋ tf ์ผ ๊ฒ ๊ฐ์์ ํ๊ณ ํฉ๋๋ค.
์ดํ ํ๋ก ํธ์๋๋ก ์ปค๋ฆฌ์ด๋ฅผ ์์๊ฐ ๊ฑฐ์ง๋ง ํผ์ ๋ฐฑ์๋๊น์ง ์ ๋ถ ๊ฐ๋ฐํ๋ ๊ฒ๋ ์ข์ ๊ฒฝํ์ด๋ผ ์๊ฐํด ์ฌ๋ฐ๊ฒ ๊ฐ๋ฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฐฉ๋ํ ๊ฐ๋ฐ์ ๋น ๋ฅด๊ฒ ์ณ๋ด์ผ ๋๋ ์๋ฐ๊ฐ์ด ์์์ง๋ง ๊ฑฐ์ ๋ค ๋๋๊ณ ๋ณด๋๊น ์ฌ๋ฐ๊ฒ ๊ฐ๋ฐํ ๊ฒ ๊ฐ์์.
๊ฐ๋ฐํ ๊ธฐ๋ฅ๋ค์ด ๋ชจ๋ ์ ์ ๋์ํ๊ธธ ๋ฐ๋ผ๋ฉฐ 14์ผ๊น์ง QA๋ฅผ ๊ณ์ ์งํํ ์์ ์ ๋๋ค๐
์๋ง ์ฐธ์ฌํ์๋ ๋ถ๋ค์ด ์ฝ์ ์๋ ์์ ๊ฒ ๊ฐ์๋ฐ, ๊ธด ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.