[React] ๊ฐ์ฒด๋ฅผ prop์ผ๋ก ๋ฐ์ ๋ Default Parameter ์ง์
๋ฌธ์
๐ก ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ง์ ํ options
๊ฐ์ฒด์ size
, color
์์ฑ์ ๋ชจ๋ ์ ์งํด์ผ ํ๋ ์ํฉ
์ปดํฌ๋ํธ ํน์ Prop์ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ฒด๋ก ์ง์ ํ๊ณ , ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ณณ์์ ๊ฐ์ฒด๋ฅผ ๋๊ธฐ๋ฉด ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ง์ ํ ๊ฐ์ฒด๋ฅผ ๋ฎ์ด์ด๋ค. ์๋ ์์์์ options
ํ๋กญ์ size
, color
์์ฑ์ ๊ฐ๋ ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ง์ ํ์ง๋ง ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ณณ์์ size
์์ฑ๋ง ๊ฐ๋ ๊ฐ์ฒด๋ฅผ ๋๊ธฐ๋ฏ๋ก options
ํ๋กญ์ { size: 5 }
๊ฐ ๋๋ค.
// ์ปดํฌ๋ํธ ์ ์
function Child({ options = { size: 100, color: 'black' } }) {
// options ํ๋กญ ๊ธฐ๋ณธ๊ฐ์ { size: 100, color: 'black' } ์ผ๋ก ์ค์
}
// ์ปดํฌ๋ํธ ์ฌ์ฉ
return <Child options={{ size: 5 }} />;
// ํ๋กญ ๋๊ธด ํ options → { size: 5 }
// { size: 5 } ๊ฐ์ฒด๊ฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ง์ ํ { size: 100, color: 'black' } ๊ฐ์ฒด๋ฅผ ๋ฎ์ด์
ํด๊ฒฐ
๋ฐฉ๋ฒ 1
๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํ ๊ฐ์ฒด ์์ฑ์ ๋ฏธ๋ฆฌ ์ ์ํด๋๊ณ ๊ทธ ์ธ ์์ฑ์ ์ ๊ฐ ์ฐ์ฐ์(Spread Syntax)๋ฅผ ์ฌ์ฉํ๋ฉด, ํ๋กญ์ผ๋ก ๋ฐ์ ๊ฐ์ฒด ์์ฑ๋ง ๋ฎ์ด์ฐ๊ณ ๋๋จธ์ง ๊ทธ๋๋ก ์ ์งํ ์ ์๋ค. ์๋ ์์์์ size
์์ฑ๋ง ๊ฐ๋ options
ํ๋กญ์ ๋ฐ์์ผ๋ฏ๋ก size
์์ฑ๊ฐ๋ง 5
๋ก ๋ฎ์ด์ฐ๊ณ , color: 'black'
์์ฑ๊ฐ์ ๊ทธ๋๋ก ์ ์งํ๋ค.
// ์ปดํฌ๋ํธ ์ ์
function Child({ options }) {
const defaultOptions = { size: 100, color: 'black', ...options };
}
// ์ปดํฌ๋ํธ ์ฌ์ฉ
return <Child options={{ size: 5 }} />;
// ํ๋กญ ๋๊ธด ํ defaultOptions -> { size: 5, color: 'black' }
// ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ง์ ํ color ์์ฑ์ ์ ์งํ๊ณ ํ๋กญ์ผ๋ก ๋๊ธด size ์์ฑ๋ง ๋ณ๊ฒฝ๋จ
๋ฐฉ๋ฒ 2
๊ฐ ์์ฑ์ ๊ฐ๋ณ์ ์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ค๋ฉด ๊ตฌ์กฐ ๋ถํด ํ ๋นํ๋ ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ํ์ฉํ ์ ์๋ค. ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํด๋๋ฉด ๋ถํดํ ๊ฐ์ด undefined
์ผ ๋ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ๋ค. ์๋ฅผ๋ค์ด ํ๋กญ์ผ๋ก ๋๊ธด options
๊ฐ์ฒด์ color
์์ฑ์ด ์๋ค๋ฉด, color
๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ง์ ํ black
์ด ํ ๋น๋๋ค.
// ์ปดํฌ๋ํธ ์ ์
function Child({ options }) {
const { size = 100, color = 'black', ...rest } = options;
console.log(size, color, rest); // 5, 'black', {}
}
// ์ปดํฌ๋ํธ ์ฌ์ฉ
return <Child options={{ size: 5 }} />;
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[TS] @ts-ignore, @ts-expect-error ํ์ ์คํฌ๋ฆฝํธ ์ฃผ์ ์ฐจ์ด์
[TS] @ts-ignore, @ts-expect-error ํ์ ์คํฌ๋ฆฝํธ ์ฃผ์ ์ฐจ์ด์
2024.05.08 -
[JS] ๋ค๊ตญ์ด๋ฅผ ๊ณ ๋ คํ์ฌ ๋ฌธ์์ด์ ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ๋ง๋ค๊ธฐ
[JS] ๋ค๊ตญ์ด๋ฅผ ๊ณ ๋ คํ์ฌ ๋ฌธ์์ด์ ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ๋ง๋ค๊ธฐ
2024.05.08 -
[HTML/CSS] ์์ ์ผ์ชฝ/์์ชฝ ๋ณ๋ถํฐ ํด๋ฆญ ์ง์ ๊น์ง ๊ฑฐ๋ฆฌ ๊ตฌํ๊ธฐ
[HTML/CSS] ์์ ์ผ์ชฝ/์์ชฝ ๋ณ๋ถํฐ ํด๋ฆญ ์ง์ ๊น์ง ๊ฑฐ๋ฆฌ ๊ตฌํ๊ธฐ
2024.05.08 -
[HTMl/CSS] ์๋ฆฌ๋จผํธ์ ๋ชจ๋ CSS ์คํ์ผ ์์ฑ / ๊ฐ ์กฐํํ๊ธฐ
[HTMl/CSS] ์๋ฆฌ๋จผํธ์ ๋ชจ๋ CSS ์คํ์ผ ์์ฑ / ๊ฐ ์กฐํํ๊ธฐ
2024.05.08