react] ๋ฐฐ์ด๊ตฌ์กฐ๋ถํด์ ๊ฐ์ฒด๊ตฌ์กฐ๋ถํด์ ์ฐจ์ด์
๐ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด ํ ๋น
โ 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๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋์ด ์ค์๋ํฉ๋๋ค.
โ ์์ฝ
๊ตฌ์กฐ ๋ถํด ๋์ ์์ ํ์ ์ฌ๋ถ
โ ๋ฐฐ์ด | โ ์์ ์ค์ |
โ ๊ฐ์ฒด | โ ์์ ๋ฌด๊ด (์ด๋ฆ ๊ธฐ์ค) |