navigationOptions
- 네비게이션 바의 타이틀이나 색상을 변경한다.
- 네비게이션은 static 정적 데이터나 함수를 사용가능하고
- 함수의 경우 리턴값으로 {navigation, navigationOptions} 를 전달한다.
정적 데이터
class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Details',
navigationOptions: {
}
}
...
}
const HomeScreen = () => { ... }
HomeScreen.navigationOptions = {
title: 'Details'
}
함수
class HomeScreen extends React.Component {
static navigationOptions = ({navigation, navigationOptions, screenProps}) => {
const { params } = navigation.state;
return {
title: 'Details',
title: navigation.getParam('type')
}
}
const HomeScreen = () => { ... }
HomeScreen.navigationOptions = ({navigation, navigationOptions}) => {
const { params } = navigation.state;
return{
title: 'Details'
}
}
타이틀 스타일
class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Detail',
headerStyle: {
backgroundColor: '#f4511e',
},
headerTintColor: '#fff',
headerTitleStyle: {
fontWeight: 'bold',
},
};
...
const AppNavigator = createStackNavigator(
{
Home: HomeScreen,
Details: DetailsScreen,
},
{
initialRouteName: 'Home',
defaultNavigationOptions: {
headerStyle: {
backgroundColor: '#f4511e',
},
headerTintColor: '#fff',
headerTitleStyle: {
fontWeight: 'bold',
},
},
}
);
커스텀 컴포넌트를 제목에 사용
const LogoTitle = () => {
return (
<View style={{ flex: 1, height: 30 }}>
<Text>Logo</Text>
</View>
);
}
class HomeScreen extends React.Component {
static navigationOptions = {
headerTitle: () => <LogoTitle />,
};
}