์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

react] ๋ฐฐ์—ด๊ตฌ์กฐ๋ถ„ํ•ด์™€ ๊ฐ์ฒด๊ตฌ์กฐ๋ถ„ํ•ด์˜ ์ฐจ์ด์ 

์ง„์—ด์‚ฌ๋ž‘ 2025. 6. 23. 15:10

๐Ÿ“Œ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น

โœ… const { gisMap, gisCore } = useGisContext();์ฒ˜๋Ÿผ ์„ ์–ธ ์ˆœ์„œ๊ฐ€ ๋‹ฌ๋ผ๋„ ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.


๐Ÿ” ์ด์œ : ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์€ ์ˆœ์„œ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค

JavaScript (๋ฐ TypeScript)์—์„œ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์€ "์ด๋ฆ„์œผ๋กœ ๋งค์นญ"๋˜๋ฏ€๋กœ, ๋ณ€์ˆ˜ ์„ ์–ธ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ:

const obj = { a: 1, b: 2 };

// ์ˆœ์„œ ๋‹ฌ๋ผ๋„ ๋ฌธ์ œ ์—†์Œ
const { b, a } = obj;

console.log(a); // 1
console.log(b); // 2

๐Ÿ”ง ๋งฅ๋ฝ์— ์ ์šฉํ•ด ๋ณด๋ฉด

// context ๊ธฐ๋ณธ๊ฐ’ ์„ ์–ธ
export const GisContext = createContext({
  gisCore: null,
  gisMap: null,
  treeData: null,
  checkedLayerIds: null
});

// context ์‚ฌ์šฉ hook
export const useGisContext = () => useContext(GisContext);

// ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ๊ตฌ์กฐ ๋ถ„ํ•ด
const { gisMap, gisCore } = useGisContext();

→ ์—ฌ๊ธฐ์„œ useGisContext()๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๊ฐ์ฒด๋Š” { gisCore, gisMap, ... } ํ˜•ํƒœ์˜ ๊ฐ์ฒด์ด๋ฏ€๋กœ,

  • gisMap์„ ๋จผ์ € ๊บผ๋‚ด๋“ 
  • gisCore๋ฅผ ๋จผ์ € ๊บผ๋‚ด๋“ 

๋‘˜ ๋‹ค ํ‚ค ์ด๋ฆ„๋งŒ ์ผ์น˜ํ•˜๋ฉด ๋ฌธ์ œ ์—†์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“Œ๋ฐฐ์—ด ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น

โœ… const [, setCounter] = useCounterState(); ์—์„œ ์ˆœ์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ” ์ด์œ : ๋ฐฐ์—ด ๊ตฌ์กฐ ๋ถ„ํ•ด๋Š” ์ˆœ์„œ์— ์˜์กด

const [counter, setCounter] = useCounterState();

์ด์ฒ˜๋Ÿผ useCounterState()๊ฐ€ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ์‹œ ์ˆœ์„œ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด:

const [a, b] = [1, 2];   // a === 1, b === 2
const [b, a] = [1, 2];   // b === 1, a === 2 (๋‹ค๋ฆ„)

๐Ÿ”ง ์ ์šฉ ์‚ฌ๋ก€

function Buttons() {
  const [, setCounter] = useCounterState();

์—ฌ๊ธฐ์„œ useCounterState()๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค:

function useCounterState() {
  const [counter, setCounter] = useState(0);
  return [counter, setCounter];
}

์ฆ‰, 0๋ฒˆ ์ธ๋ฑ์Šค = counter, 1๋ฒˆ ์ธ๋ฑ์Šค = setCounter ์ด๋ฏ€๋กœ:

  • const [, setCounter]๋Š” 1๋ฒˆ ์ธ๋ฑ์Šค๋งŒ ๊บผ๋‚ด๋Š” ๊ฒƒ (์ •ํ™•ํ•จ)
  • ๋งŒ์•ฝ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๋ฉด setCounter์—๋Š” counter๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜์–ด ์˜ค์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

โœ… ์š”์•ฝ

๊ตฌ์กฐ ๋ถ„ํ•ด ๋Œ€์ƒ ์ˆœ์„œ ํ•„์š” ์—ฌ๋ถ€

โœ… ๋ฐฐ์—ด โ— ์ˆœ์„œ ์ค‘์š”
โœ… ๊ฐ์ฒด โœ… ์ˆœ์„œ ๋ฌด๊ด€ (์ด๋ฆ„ ๊ธฐ์ค€)