ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

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๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌํ•ด์ฃผ์–ด์•ผ ํ•  ๋“ฏ ํ•˜๋‹ค.

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2026/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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 31
๊ธ€ ๋ณด๊ด€ํ•จ