📝
ReactNative
July 22, 2025
리액트 네이티브 컴포넌트
리액트 네이티브에서 컴포넌트는 UI를 구성하는 기본 단위입니다. 웹의 React와 마찬가지로, 재사용 가능한 UI 조각을 만들 수 있습니다. 기본 제공 컴포넌트와 사용자 정의 컴포넌트로 나뉩니다.
주요 리액트 네이티브 컴포넌트: 역할과 주요 속성
1. View
- 역할: 레이아웃을 구성하는 가장 기본적인 컨테이너(웹의 div와 유사)
- 주요 속성
- style: 스타일 지정 (배경색, 정렬 등)
- children: 내부에 다른 컴포넌트 포함 가능
<View style={{ flex: 1, backgroundColor: 'white' }}>{/* ... */}</View>2. Text
- 역할: 텍스트를 화면에 표시하는 컴포넌트
- 주요 속성
- style: 텍스트 스타일 지정 (색상, 크기 등)
- numberOfLines: 표시할 최대 줄 수
- ellipsizeMode: 텍스트가 넘칠 때 처리 방식 (‘head’, ‘middle’, ‘tail’, ‘clip’)
<Text style={{ fontSize: 20 }} numberOfLines={1} ellipsizeMode="tail">
긴 텍스트 예시
</Text>3. Image
- 역할: 이미지를 화면에 표시하는 컴포넌트
- 주요 속성
- source: 이미지 경로(로컬 또는 uri)
- style: 이미지 크기, 모양 등
- resizeMode: 이미지 크기 조절 방식 (‘cover’, ‘contain’, ‘stretch’, ‘repeat’, ‘center’)
<Image
source={{ uri: 'https://reactnative.dev/img/tiny_logo.png' }}
style={{ width: 50, height: 50 }}
resizeMode="contain"
/>4. ScrollView
- 역할: 스크롤이 가능한 영역을 만드는 컨테이너
- 주요 속성
- horizontal: 가로 스크롤 여부 (true/false)
- contentContainerStyle: 내부 컨텐츠 스타일
- showsVerticalScrollIndicator: 세로 스크롤바 표시 여부
<ScrollView horizontal={true} contentContainerStyle={{ padding: 10 }}>
{/* ... */}
</ScrollView>5. TextInput
- 역할: 사용자로부터 텍스트 입력을 받는 입력 필드
- 주요 속성
- value: 입력값(상태와 연결)
- onChangeText: 텍스트 변경 시 호출 함수
- placeholder: 입력 전 안내 텍스트
- secureTextEntry: 비밀번호 입력용(가림 처리)
<TextInput value={text} onChangeText={setText} placeholder="입력하세요" secureTextEntry={false} />6. Button
- 역할: 기본적인 버튼 UI 제공(간단한 클릭 이벤트 처리)
- 주요 속성
- title: 버튼에 표시될 텍스트
- onPress: 버튼 클릭 시 실행 함수
- color: 버튼 색상 (플랫폼별 지원 다름)
<Button title="눌러보세요" onPress={() => alert('Button pressed!')} color="#841584" />NativeWind로 Tailwind CSS 스타일 적용하기
리액트 네이티브에서 Tailwind CSS의 유틸리티 클래스를 사용하려면 NativeWind 라이브러리를 활용할 수 있습니다.
1. NativeWind 설치
npm install nativewind또는
yarn add nativewind2. babel 설정 추가
babel.config.js에 아래 preset을 추가해야 합니다.
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
plugins: ['nativewind/babel'],
};3. 사용 예시
NativeWind를 사용하면, 웹에서 Tailwind를 쓰듯이 className prop으로 스타일을 지정할 수 있습니다.
import React from 'react';
import { View, Text, Image, TextInput, ScrollView } from 'react-native';
const MyComponent = () => (
<ScrollView className="bg-gray-100">
<View className="p-5">
<Text className="text-2xl font-bold text-blue-600">Hello, React Native + Tailwind!</Text>
<Image
source={{ uri: 'https://reactnative.dev/img/tiny_logo.png' }}
className="w-10 h-10 my-4"
/>
<TextInput
placeholder="Type here..."
className="border border-gray-300 rounded px-2 py-1 my-2"
/>
{/* Button은 className 지원이 제한적이므로, TouchableOpacity 등으로 커스텀 가능 */}
</View>
</ScrollView>
);
export default MyComponent;결론
- 리액트 네이티브 컴포넌트는 모바일 앱 UI를 쉽고 효율적으로 구성할 수 있게 해줍니다.
- NativeWind를 활용하면 Tailwind CSS의 익숙한 문법으로 빠르게 스타일링할 수 있습니다.
- 기본 컴포넌트와 사용자 정의 컴포넌트를 적절히 활용하면, 다양한 화면을 손쉽게 만들 수 있습니다.