ํฐ์คํ ๋ฆฌ ๋ทฐ
Context API์ Redux๋ฅผ ๋ฐฐ์ฐ๋ฉฐ ํ์ฌ ๊ณผ์ (ํฌ์ผ๋ชฌ ๋๊ฐ)๋ฟ๋ง ์๋๋ผ ์ด์ ๊ณผ์ (์ฌ๋ฆผํฝ ํธ๋์ปค)์ ์ ์ฉํด๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค.
์ฌ๋ฆผํฝ ๋ฉ๋ฌ ํธ๋์ปค ๊ณผ์ ๊ตฌํ ์ ๋ฆฌ (ํด๋ฆญ)
๋ ๊ฐ์ง๋ฅผ ๊ตฌํํ๋ฉด์ ๊ฐ์ฅ ํท๊ฐ๋ฆฌ๋ ๊ฒ์ด ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ ์ํ๋ฅผ ๊ณจ๋ผ๋ด๋ ๊ฒ์ด๋ค.
๊ทธ๋์ Context ํ์ผ์ ๋ชจ๋ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋๋ค..
์ฌ๋ฆผํฝ ํ๋ก์ ํธ์์ ํจ์ ์ปดํฌ๋ํธ๋
์ถ๊ฐ, ์ญ์ , ์ ๋ฐ์ดํธ, ์ ๋ ฌ ๋ก ๋๋์๋ค.
Context ํ์ผ์ ๋ณด๋ฉฐ ๊ณ ๋ฏผํ ๊ฒ์ด ์ ๋ ฌ ํจ์๋ฅผ ์ด๋์ ์์นํด์ผ ํ๋ ์ถ์๋ค.
(reducer๋ก ๋ง๋ค๊ธฐ? List ์ปดํฌ๋ํธ์ ๋๊ธฐ?)
sort ๋ก์ง ์ดํด
์ฐ์ ์ ๋ ฌ ๋ก์ง์ ์ดํด๋ณด์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
// ์ ๋ ฌ ํจ์
const [sortType, setSortType] = useState("gold");
const getSortMedals = () => {
const tempNationList = [...nationList]; //sort ๋ฉ์๋๋ ์๋ณธ ๋ฐฐ์ด ์ง์ ๋ณ๊ฒฝ, ์ ๋ ฌ๋ ๋ฐฐ์ด ๋ฐํ
if (sortType === "gold") {
return tempNationList.sort((a, b) => b.gold - a.gold);
}
if (sortType === "total") {
return tempNationList.sort((a, b) => {
return b.gold + b.silver + b.bronze - (a.gold + a.silver + a.bronze);
});
}
};
- useState๋ฅผ ํตํด 'sortType'์ ๊ด๋ฆฌํ๋ค. (์ ๋ ฌ ์ ํ - gold์ total)
- sort ๋ฉ์๋๋ ์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ๊ธฐ ๋๋ฌธ์ ์๋กญ๊ฒ ๋ณต์ฌํ ๋ฐฐ์ด(tempNationList)์ ํ์ฉํ๋ค. โญ๏ธ
- ์ ์ฒด์ ์ธ ํ๋ฆ
- nationList์ ๋ฐฐ์ด๋ก ์ ์ฅ๋ ๊ตญ๊ฐ ๋ฐ์ดํฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก sortType === 'gold' ๋ก ์ ๋ ฌ๋์ด์๋ค.
- ์ ๋ ฌ ๋ผ๋์ค ๋ฒํผ์ ํด๋ฆญ
- gold / total์ ๋ฐ๋ผ์ ๊ธฐ์ค๋๋ก ์ ๋ ฌํ๋ค.
- ์ ๋ ฌํ ๊ฐ(๋ณ์๋ช : medalRank)์ ์๋ก์ด ์ํ(sortType State) ํ๋ฉด์ ์ถ๋ ฅํ๋ค.

์๋ฌธ์ ๊ณผ ๋ต๋ณ
โญ๏ธ
๋ถ๋ถ์์ ์๋ฌธ์ ์ด ๋ค์๋ค.
? State๋ฅผ ์ง์ ํ์ง๋ง, tempList๋ฅผ ๋ฐ๋ก ๋ง๋๋ ์ด์ ๊ฐ ๋ญ๊น
-> state ์ง์ ์ ๋ฐ๋ก ๋ง๋ ๊ฒ์ด ์๋ '์ํ'์ ์๋ฏธํ๋ค. tempList๋ฅผ ํตํด ์๋ก์ด ๊ฐ์ ๋ง๋ค๊ณ ๊ทธ ๊ฐ์ ์ํ์ ์ง์ ํ๋ ๊ฒ์ด๋ค.
์ ๋ ฌ ๋ด์ฉ์ ์๋ก์ด ์ํ(sortType State)์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ํ๊ฐ ๋ณํ ๋๋ง๋ค(=์ ๋ ฌ ๊ธฐ์ค์ด ๋ณํ ๋๋ง๋ค) ๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋๊ฒ ๋๋ค.
? ๊ทธ๋ ๋ค๋ฉด, ๋ณ์(tempList)๋ง์ด ์๋ State๋ก ๊ด๋ฆฌํ๋ ์ด์ ๋ ๋ญ๊น
-> ๋ณ์๋ก ๊ฐ์ ๋ง๋ค๋ฉด ๊ผญ setNation์ ํด์ค์ผ ์ ๋ ฌ ๊ฐ์ด ๋ฐ์๋๋ค.
ํ์ง๋ง setNation์ ํด๋ฒ๋ฆฌ๋ฉด ๊ธฐ์กด ๋ฆฌ์คํธ์ ๊ฐ์ด ์ ์ฒด์ ์ผ๋ก ๋ณํด๋ฒ๋ฆฐ๋ค.
์ฌ์ค ์ด ๊ณผ์ ๋ด์์๋ ๋ฆฌ์คํธ๊ฐ ํ ์นดํ ๊ณ ๋ฆฌ๋ฐ์ ์์ด์ ๊ด์ฐฎ์ง๋ง
๋ง์ฝ ์ผํ๋ชฐ ์ฌ์ดํธ ๊ฐ์ด ๋ค์ํ ์นดํ ๊ณ ๋ฆฌ(์ธ๊ธฐ์, ๊ฐ๊ฒฉ ๋ฎ์ ์ ๋ฑ)์ ์ ๋ ฌํ๋ค๊ณ ํ๋ฉด
๋ชจ๋ ๋ฆฌ์คํธ์ ๊ฐ์ด ์๋ก ์ง์ ๋๊ธฐ ๋๋ฌธ์ ํฐ ๋ฌธ์ ๊ฐ ์๊ธธ ์๋ ์๋ค.
์ฌ๋งํด์๋ ๊ธฐ๋ณธ ๋ฆฌ์คํธ ๊ฐ์ ์ ๊ฑด๋๋ฆฌ๋ ๊ฒ ์ข๋ค.
์ต์ข ํด๊ฒฐ
๋ฐ๋ผ์ ์ ๋ ฌ ํจ์๋ ๊ธฐ์กด ๋ฆฌ์คํธ์ ๊ฐ์ ๋ณต์ ํ์ฌ ์๋ก์ด state๋ก ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์
sort์ฉ slice๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์ ๊ด๋ฆฌํด์ฃผ์ด์ผ ํ ๋ฏ ํ๋ค.
'Language > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [โ๏ธ] ์ฟผ๋ฆฌ ๋ฌดํจํ, ๊ทธ๋ฆฌ๊ณ staleTime & gcTime (0) | 2025.03.09 |
|---|---|
| [โ๏ธ] Tanstack Query(1) - useQuery, mutate, invalidateQueries (0) | 2025.03.08 |
| [Pokemon PJ_Day 4] RTK (2) - ์ฌ์ฉํ๊ธฐ (0) | 2025.02.06 |
| [Pokemon PJ_Day 4] RTK (1) - ์ธํ ํ๊ธฐ (0) | 2025.02.06 |
| [โ๏ธ] Redux - counter ์ฑ ์์ฑ, redux ์ฌ์ดํด, dispatch (0) | 2025.02.03 |