Перейдите на другой экран с кнопки в заголовке
Я использую новый React-navigation из native-native. У меня есть навигация следующим образом:
StackNavigator:
- TabNavigator//HomeNavigation
- TabNavigator//NotificationNavigation
Полный код:
const MainNavigation = StackNavigator({
Home: {
screen: HomeNavigation,
},
Notification: {
screen: NotificationNavigation,
}
});
const HomeNavigation = TabNavigator({
AllPost: {
screen: All,
},
ArticlePost: {
screen: Article,
},
BusinessPost: {
screen: Job,
},
});
HomeNavigation.navigationOptions = {
title: 'Home',
header: {
right: <SearchNotification/>
},
};
class SearchNotification extends React.Component {
goToNotification = () => {
this.props.navigate('Notification');
};
render() {
return (
<View style={styles.container}>
<TouchableOpacity>
<Icon name="md-search" style={styles.Icon}/>
</TouchableOpacity>
<TouchableOpacity style={styles.notificationWrapper} onPress={this.goToNotification}>
<Icon name="md-notifications" style={styles.Icon}/>
<Text style={styles.number}>3</Text>
</TouchableOpacity>
</View>
)
}
}
const NotificationNavigation = TabNavigator({
Comment: {
screen: NotificationComment,
},
Follow: {
screen: NotificationFollow,
}
});
У HomeNavigation есть заголовок, и заголовок имеет правильный компонент SearchNotification. У SearchNotification есть значок, который при нажатии я хотел бы пойти в NotificatoinNavigation.
Однако, если я вношу изменения в заголовок HomeNavigation таким образом, SearchNotification не отображается в заголовке.
HomeNavigation.navigationOptions = {
title: 'Home',
header: {
tintColor: 'white',
style: {
backgroundColor: '#2ec76e',
},
right: ({navigate}) => <SearchNotification navigate={navigate}/>
},
};
Как перейти к другому экрану с кнопки в заголовке?
Ответы
Ответ 1
Итак, проблема была (я думаю), внутри navigationOptions
вместо использования navigations
мне пришлось использовать navigate
, и передать ее как реквизит для ребенка (т.е. SearchNotification).
Итак, окончательный код выглядит следующим образом:
HomeNavigation.navigationOptions = {
title: 'Home',
header: ({navigate}) => ({
right: (
<SearchNotification navigate={navigate}/>
),
}),
};
И в компоненте SearchNotification:
export default class SearchNotification extends React.Component {
goToNotification = () => {
this.props.navigate('Notification');
};
render() {
return (
<View style={styles.container}>
<TouchableOpacity>
<Icon name="md-search" style={styles.Icon}/>
</TouchableOpacity>
<TouchableOpacity style={styles.notificationWrapper}
onPress={() => this.props.navigate('Notification')}>
<Icon name="md-notifications" style={styles.Icon}/>
<Text style={styles.number}>3</Text>
</TouchableOpacity>
</View>
)
}
}