alignSelf는 Flexbox 레이아웃 시스템에서 개별 아이템의 정렬 방식을 제어하는 속성입니다.
React Native는 기본적으로 Flexbox를 사용하기 때문에, alignSelf를 이해하면 레이아웃을 자유자재로 다룰 수 있습니다.
alignSelf의 동작 원리 (vs. alignItems)부모 컨테이너의 alignItems
alignItems: 'center' → 모든 자식이 가로축 중앙 정렬됩니다.개별 아이템의 alignSelf
alignItems 설정을 무시하고 독립적으로 동작합니다.alignSelf: 'flex-start'가 효과적인 이유기본값 문제: React Native에서 View/Pressable은 기본적으로 alignSelf: 'stretch'입니다.
→ 부모의 전체 너비를 차지하려고 합니다 (width: 100%와 유사).
해결 방법: flex-start로 변경하면
→ "콘텐츠 크기만큼만 너비를 차지해!" 라는 의미가 됩니다.
→ Tailwind CSS의 w-fit 또는 웹의 width: fit-content와 동일한 효과입니다.
alignSelf의 주요 옵션| 값 | 설명 | 웹 CSS 대응 |
|---|---|---|
'flex-start' | 아이템을 시작점으로 정렬 | align-self: flex-start |
'center' | 아이템을 중앙으로 정렬 | align-self: center |
'flex-end' | 아이템을 끝점으로 정렬 | align-self: flex-end |
'stretch' | (기본값) 부모 너비에 맞춰 늘림 | align-self: stretch |
'baseline' | 텍스트 베이스라인에 맞춤 | align-self: baseline |
<View style={{ flexDirection: 'column' }}> {/* 기본 레이아웃 */}
{/* 이 Pressable은 부모 너비 전체를 차지함 (기본값) */}
<Pressable style={{ backgroundColor: 'red' }}>
<Text>기본 버튼</Text>
</Pressable>
{/* 이 Pressable은 콘텐츠 크기만큼만 차지함 */}
<Pressable style={{
backgroundColor: 'blue',
alignSelf: 'flex-start' // ← 핵심!
}}>
<Text>fit-content 버튼</Text>
</Pressable>
</View>
alignSelf는 "나 혼자만 다르게 정렬할래!" 하는 속성입니다. flex-start를 사용하면 자식의 본래 크기를 유지하면서 부모의 정렬 시작점에 붙게 됩니다. w-fit 같은 효과를 내려면 alignSelf: 'flex-start'가 최적의 해결책입니다.