ํ๋กํ ์์
๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋ํ๋๋ ํ๋กํ์ ์์ ํ ์ ์๋ ํ์ด์ง์ํ ๋ฑ๋ก
๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋ํ๋๋ ์ํ ๋ฑ๋ก ํ์ด์ง๊ฒ์๊ธ ์์ฑ
์ ํด๋ฆญํ๋ฉด ๋ํ๋๋ ๊ฒ์๊ธ ์์ฑ ํ์ด์ง์ฑํ
์ ํด๋ฆญํ๋ฉด ๋ํ๋๋ ์ฑํ
๋ชฉ๋ก ํ์ด์ง// UserAvatar.tsx
import styled from '@emotion/styled';
import { COLORS } from '../constants';
type AvatarProps = {
size: string;
padding: string;
};
export const UserAvatar = ({ size, padding }: AvatarProps) => {
return (
<ImgProfile
size={size}
padding={padding}
src="/default-profile-w.png"
alt="์ฌ์ฉ์ ํ๋กํ ์ด๋ฏธ์ง"
/>
);
};
const ImgProfile = styled.img<AvatarProps>`
width: ${(props) => props.size};
height: ${(props) => props.size};
padding: ${(props) => props.padding};
border-radius: 50%;
background-color: ${COLORS.light_gray};
`;
size
์ padding
๊ฐ์ ์ง์ ํด์ผ ํ๊ณ ๊ทธ๋ฌ๋ฉด์ ๊ฐ์ด ์๋ชป ์ ์ฉ๋์ด ์๋ ๋ถ๋ถ์ ์ฌ์ฌ์น ์๊ฒ ๋ฐ๊ฒฌํ ์ ์์๋ค...<UserAvatar size="30px" padding="6px" />
<UserAvatar size="40px" padding="5px" />
<UserAvatar size="90px" padding="10px" />
constants
๋๋ ํ ๋ฆฌ์ index.ts
์ USER_AVATAR
์ถ๊ฐexport const USER_AVATAR = {
xs: {
size: '24px',
padding: '6px',
},
sm: {
size: '30px',
padding: '6px',
},
md: {
size: '40px',
padding: '5px',
},
lg: {
size: '90px',
padding: '10px',
},
};
UserAvata
์ปดํฌ๋ํธ์ size
์ padding
์ ๊ฐ์ ์ง์ ์
๋ ฅ<UserAvatar size={USER_AVATAR.xs.size} padding={USER_AVATAR.xs.padding} />
<UserAvatar size={USER_AVATAR.sm.size} padding={USER_AVATAR.sm.padding} />
<UserAvatar size={USER_AVATAR.md.size} padding={USER_AVATAR.md.padding} />
<UserAvatar size={USER_AVATAR.lg.size} padding={USER_AVATAR.lg.padding} />
์ฐธ๊ณ ๋งํฌ
@emotion/styled - Passing Props
=> props ์ ๋ฌ ๋ฐฉ๋ฒ์ ๊ตฌ๊ธ๋ง ํ์ผ๋ ๊ฒฐ๊ตญ์ ๊ณต์๋ฌธ์๋ฅผ ๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์๋ค! (๋ฟ๋ฏ)
์ ํธ ์์ฑ ์ธ์ ํ๋งจ๋ง์ธ