In this lesson, you will master how to precisely position your components along the primary and cross axes to build sophisticated, responsive layouts.
The Axis Concept
In React Native, Flexbox relies on two axes: the Main Axis (defined by flexDirection) and the Cross Axis (the perpendicular direction). By default, flexDirection is set to 'column', meaning your Main Axis runs vertically and your Cross Axis runs horizontally.
Controlling Alignment
To move elements along these axes, we use two primary properties:
justifyContent: Moves elements along the Main Axis.alignItems: Moves elements along the Cross Axis.
Imagine a vertical stack (a View with flexDirection: 'column'). If you want your items centered perfectly in the middle of the screen, you need both:
<View style={{
flex: 1,
flexDirection: 'column',
justifyContent: 'center', // Centers vertically
alignItems: 'center' // Centers horizontally
}}>
<Text>Centered Content</Text>
</View>
Pattern Variations
The power of these properties comes from how they distribute space:
space-between: Pushes the first item to the start and the last item to the end, distributing remaining space evenly between them. This is common for navigation bars where you have a title in the middle and buttons on the edges.flex-startvsflex-end: These snap your content to the beginning or the end of the container, respectively.stretch: (The default foralignItems) This forces your child components to fill the entire length of the cross-axis, which is perfect for buttons or input fields that should span the width of the screen.
When you combine these, you can create complex hierarchies, such as a "Header" layout where the logo is aligned to the start, but the logout button is pushed to the far end using justifyContent: 'space-between' on a row-based container.
Key Takeaway: Use justifyContent for the direction you are flowing in, and alignItems for the direction perpendicular to that flow to gain full control over your interface layout.