์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ํจ์
- ํ์ค
- trainning
- ๋ด์ผ๋ฐฐ์์บ ํ
- native
- ์จ๋ผ์ธ
- JS
- Firebase
- ๋ณ์
- ์๋ฐ์คํฌ๋ฆฝํธ
- JavaScript
- ๊ฐ๋ฐ์
- rn
- K-Digital
- ๋ด์ผ๋ฐฐ์
- ํ๋ก ํธ์๋
- type
- ์๋ฌ
- ๋ถํธ์บ ํ
- ํ์
- Redux
- ๋ฆฌ์กํธ
- ์ฝ๋ฉ
- NEXT
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก์ ํธ
- wil
- API
- PROJECT
- react
- Today
- Total
Frontend ๊ฐ๋ฐ์ - hyo.loui
Project: Develife - main ๊ตฌ์ฑ๊ณผ React-Query ์ ์ฉ ๋ณธ๋ฌธ
๐ฏ๋ชฉ์ :
Youtube API ํ์ฉ
(๋น๋๊ธฐ)์๋ฒํต์ : React-Query ์ ์ฉ response ๋ก UI๊ตฌ์ฑ
๐คข ํธ๋ฌ๋ธ ์ํ :
- filter ๋ฉ์๋ ๋ฌธ์ ํด๊ฒฐ
1. react query
Youtube API ํ์ฉ์ ์์ด
์๋ฒํต์ ์ ์์ฐ์ฑ์ ์ํด
react-query ์ ์ฉ์ ๊ธฐํํ๋ค.
api.js์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ํจ์๋ฅผ ๊ด๋ฆฌํ๋ ํ์ผ์ ๋ฐ๋ก ๋ถ๋ฆฌํ๊ณ
์ค๋ณต๋๋ url ๊ณผ api key๋ ๋ฐ๋ก ๋ณ์์ ์ธ์ ํด์ฃผ์๋ค.
ํ์ํ component์์ react-query๋ฅผ ์ฐ๊ฒฐํด
์ ํจ์๋ฅผ ์ฌ์ฉํ๋๋ก import ํ๋ค.
๋ณ์นญ์ ๋ถ์ฌ ๋ฐ์ดํฐ์ ๋ชฉ์ ์ ์ ํํ๊ฒ ๋ช ์ํ๋ค.
2. UI ์์ฑ
์์์ react-query๋ก ๊ฐ์ ธ์จ AllPlayList ๋ผ๋ ๋ฐฐ์ดํ ๋ฐ์ดํฐ๋
map ๋ฉ์๋๋ก ํ๋์ฉ ๋๋ฉฐ,
์ด๋ฏธ์งํ๊ทธ์ source๋ฅผ ๋ฃ์ด ์ฃผ์๊ณ
ํ๋ก์ ํธ ๊ธฐํ์ title์ ์ฌ์ฉ ํ ์ผ์ด ์์์ง๋ง,
์ฌ์ฉ์ฑ์ ๊ณ ๋ คํด alt์ title์ ๋ฃ์ด์ฃผ์๋ค.
๋ ํด๋ฆญ์ ๋ชจ๋ฌ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง์ด ๋๋๋ฐ
๋ฏธ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ videoId ๊ฐ์ ๋ฃ์๋ค.
์๋ํ๋ฉด, ๋ชจ๋ฌ์์ iframe ํ๊ทธ๋ก src ๋ฅผ ๋ฃ์ด์ค ๋
ํด๋น ๋น๋์ค์ ๊ณ ์ ์์ด๋๊ฐ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
+ ์ ๊ณผ์ ์์ filter๋ฅผ ํ์ฉํด ๋ฐฐ์ด์
์ฒซ๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํด์ผ ํ๋ ๋ก์ง์ ๊ตฌ์ฑํด์ผํ๋ค.
ํ์ง๋ง ๋ฐ์ดํฐ๊ฐ ์๋ฌด๋ฐ ๋ณํ๊ฐ ์๊ธฐ์ง ์์ ์๊ฐ์์๊ฐ ์์๋ค..ใ ใ
์๋ ์ฐธ์กฐ `ํธ๋ฌ๋ธ ์ํ `
3. modal
modal์ ํ ๊ธ ์ฌ์ฉ์ ์ํ state๋ฅผ ๋ง๋ค์ด ์ฃผ์๊ณ ,
๋น๊ต์ ๊ฐ๋จํ ๋ด์ฉ์ธ id๋ฅผ props๋ก ์ ๋ฌํ๊ธฐ ์ํ modalPlayId state๋ฅผ ์์ฑํด ์ฃผ์๋ค.
4. iframe (player)
์์ฒ๋ผ prop์ผ๋ก ๊ฐ์ ธ์จ id๊ฐ์ ์ง์ ํ์ฌ ๋ชจ๋ฌ๋ง๋ค
src URI์ฃผ์๊ฐ ๋ค๋ฅด๊ฒ ๊ตฌ์ฑํ๋ค.
+ ํธ๋ฌ๋ธ ์ํ :
์ ์ฝ๋๋ฅผ ์ฝ์์ ์ถ๋ ฅํด๋ด๋ ๋ฐ์ดํฐ๊ฐ ๋ณํจ์์ด
๋๊ฐ์ ๋ด์ฉ์ด์๋ค..
ํ์ง๋ง ๊ตฌ์กฐ๋ฅผ ์ ์ดํด๋ณด์
filter ํด์ผ ํ ๋์์ array ์ด๋ค
[ {}, {}, ...{} ]
ํ์ง๋ง filter๊ฐ ๋ฐ๋ผ๋ณด๋ ๋์์ ๊ฐ์ฒด์๋ค.
[ {}, {}, ...{} ]
๋ ๋ฐฐ์ด ๋ด๋ถ์ ๋ฒ์์ด๊ธฐ ๋๋ฌธ์ 2๊ฐ์ง ์กฐ๊ฑด์ด ํ์ํ๋ค.
- item์ ๊ณ ์ ๊ฐ์ธ id๋ก ๋น๊ต๊ฐ ํ์.
- item(๊ฐ์ฒด)์ ๋ฒ์ด๋ ๋น๊ต๋์์ด ํ์.
์ด๋ก์จ, ๋ฐ์ดํฐ๋
๊ฐ์ฒด์ ๊ณ ์ ๊ฐ์ธ id์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ ๊ฒ์ด๊ณ ,
๋น๊ตํ๋ ๋ฐ์ดํฐ(ItItemPlayList)์ ์ฒซ๋ฒ์งธ id์ ๊ฐ์ฒด๋ฅผ filter ํ ์ ์๊ฒ ๋์๋ค
์ต์ข ์ ๋ฆฌ
- react-query ์ฌ์ฉ ์ ๋ณ์นญ์ ๋ถ์ฌ ๋ฐ์ดํฐ์ ๋ชฉ์ ์ ์ ํํ๊ฒ ๋ช ์.
- ๋ฐฐ์ด ๋ฉ์๋ ์ฌ์ฉ ์ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ์ ์ดํด์ผ ํ๋ค(์ค๋ฅ ๋ฐ์ >> ํด๊ฒฐ).
- modal ์๋ prop์ผ๋ก ํด๋ฆญํ video ID ๊ฐ ์ ๋ฌ
- ๋ชจ๋ฌ์ด ์๊ธธ ๋ ์ ๋ฌ๋ฐ์ video ID ๊ฐ์ ํ์ฉํด iframe src ๋ณํ
'Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Project: Develife - โจTypescript ๋ฆฌํํ ๋ง ๊ณผ์ (0) | 2023.01.28 |
---|---|
Project: Develife - โจPR(pull request) ์ฌ์ฉ๋ฒ(git hub) (0) | 2023.01.27 |
Project : MZ Language (MZL) - KPT ํ๊ณ (0) | 2023.01.13 |
Project : MZL - ๋ก๊ทธ์์, ๋ง์ดํ์ด์ง ์ด๋ ์ ์๋ฌํด๊ฒฐ (0) | 2023.01.11 |
Project : MZL - ๋ก๊ทธ์ธ (0) | 2023.01.11 |