
์ฑ์ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ๊ฐ์ ๋ฒํผ, ๊ฐ์ ์คํ์ผ์ ์
๋ ฅ์ฐฝ์
์ฌ๋ฌ ๊ณณ์์ ๋ฐ๋ณตํด์ ๋ง๋ค๊ฒ ๋๋ค.
์ด๋ด ๋๋ง๋ค ๋งค๋ฒ ์คํ์ผ์ ๋ณต๋ถํ๊ฑฐ๋,
๋ก์ง์ ๋ค์ ๋ง๋๋ ๊ฑด ์์ฐ์ฑ ์ ํ + ์ ์ง๋ณด์ ์ง์ฅ์ ์ง๋ฆ๊ธธ์ด๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๊ณตํต UI ์ปดํฌ๋ํธ๋ฅผ ์ค๊ณํด์
์คํ์ผ, ๋์, ์ฌ์ฌ์ฉ์ฑ์ ํต์ผ์ํค๋ ์ ๋ต์ ์จ์ผ ํ๋ค.
์ด๋ฒ ๊ธ์ React Native์์ ์ค์ ๋ก ๋ง์ด ์ฐ์ด๋ ์ปดํฌ๋ํธ๋ค์ ์ด๋ป๊ฒ ์ค๊ณํ๋ฉด ์ข์์ง ์ ๋ฆฌํ ๊ธ์ด๋ค.
interface ButtonProps {
label: string;
onPress: () => void;
variant?: 'primary' | 'outline' | 'ghost';
disabled?: boolean;
}
export default function Button({ label, onPress, variant = 'primary', disabled = false }: ButtonProps) {
const backgroundColor = {
primary: '#007bff',
outline: 'transparent',
ghost: 'transparent',
}[variant];
const borderColor = variant === 'outline' ? '#007bff' : 'transparent';
return (
<TouchableOpacity
onPress={onPress}
disabled={disabled}
style={{
backgroundColor,
borderWidth: 1,
borderColor,
paddingVertical: 12,
paddingHorizontal: 24,
borderRadius: 6,
opacity: disabled ? 0.5 : 1,
}}
>
<Text style={{ color: variant === 'primary' ? '#fff' : '#007bff' }}>{label}</Text>
</TouchableOpacity>
);
}
โ
variant prop์ผ๋ก ์คํ์ผ ๋ถ๊ธฐ
โ
disabled ์ฒ๋ฆฌ
โ
์ฌ์ฌ์ฉ์ฑ ๋์ ๊ตฌ์กฐ
interface TextProps {
children: React.ReactNode;
size?: 'sm' | 'md' | 'lg';
weight?: 'regular' | 'bold';
color?: string;
}
export default function AppText({ children, size = 'md', weight = 'regular', color = '#000' }: TextProps) {
const fontSize = {
sm: 14,
md: 16,
lg: 20,
}[size];
const fontWeight = weight === 'bold' ? '700' : '400';
return (
<Text style={{ fontSize, fontWeight, color }}>{children}</Text>
);
}
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| prop ํ์ฅ์ฑ | variant, size, ์ํ๋ณ ๋ถ๊ธฐ ์ฒ๋ฆฌ |
| ํ ๋ง ์ฐ๋ | useTheme() or styled-components ์ฌ์ฉ |
| ํ๋ซํผ ๋์ | iOS/Android์์ ๋ค๋ฅด๊ฒ ๋ณด์ด๋ ๊ฒฝ์ฐ ๋ถ๊ธฐ |
| ์ํ | isLoading, disabled, error ๋ฑ ๋ช
ํํ๊ฒ ์ฒ๋ฆฌ |
| ํ ์คํธ ์ฉ์ด์ฑ | testID ๋ถ์ฌ๋ก ํ
์คํธ ๊ฐ๋ฅํ๊ฒ ์ค๊ณ |
react-native-paper, native-base, ui-kitten ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๋๋ผ๋์ฒ์์ ๊ทธ๋ฅ ๋ฒํผ๋ง๋ค ๋ฐ๋ก ๋ง๋ค์๋๋ฐ,
์ฑ์ด ์ปค์ง๋ฉด์ ๋์์ธ ํ์์ ์์, ๋ชจ์๋ฆฌ, ๊ทธ๋ฆผ์ ์คํ์ผ์ด ๋ฐ๋๋๊น
๋ชจ๋ ๋ฒํผ์ ๋ค ์์ ํด์ผ ํ๋ค.
๊ทธ๋๋ถํฐ ๊ณตํต ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด
๋ฒํผ, ํ
์คํธ, ์
๋ ฅ์ฐฝ, ๋ชจ๋ฌ ๋ฑ ์ฃผ์ UI๋ฅผ ๋์์ธ ์์คํ
๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์๊ณ
์์ฐ์ฑ, ์ ์ง๋ณด์, ํ ํ์
ํจ์จ๊น์ง ํจ์ฌ ์ข์์ก๋ค.
๐งฑ โUI๋ ์๋ ๊ฒ์ด ์๋๋ผ, ์ค๊ณํ๋ ๊ฒ์ด๋ค.โ