Я использую версию response-navigation 5.x, и я попытался установить правую кнопку панели для заголовка в компоненте с состоянием, но это не удалось. Я потратил целый день, чтобы решить эту проблему, и я застрял с этим.
Если я добавлю rightHeader непосредственно в стек, как указано ниже, это работает.
import React, { Component } from 'react';
import {
Button
} from 'react-native'
import { NavigationContainer } from '@react-navigation/native'
import { createStackNavigator } from '@react-navigation/stack'
function MainStackScreen() {
return (
<MainStack.Navigator screenOptions={{
headerStyle: {
backgroundColor: 'rgb(201, 53, 78)'
},
headerTintColor: '#fff',
headerTitleStyle: {
fontSize: 18,
fontWeight: 'bold',
}
}}>
<MainStack.Screen
name="Home"
component={HomeScreen}
options={{ title: 'Home', headerShown: false }}/>
<MainStack.Screen
name="Account"
component={ProfileScreen}
options={{ title: 'My Profile', headerShown: true, headerBackTitle: 'Back', headerRight: () => (
<Button
onPress={() => alert('This is a button!')}
title="Info"
color="#fff"
/>
) }}/>
<MainStack.Screen
name="MenuPackages"
component={MenuPackageScreen}
options={{ title: 'Menu Packages', headerShown: true, headerBackTitle: 'Back' }}/>
</MainStack.Navigator>
)
}
Ничего не отображается в заголовке, если я пытаюсь установить rightHeader для navigationOptions компонента.
export default class Profile extends Component {
static contextType = AuthContext
static navigationOptions = {
headerRight: () => (
<Button
onPress={() => alert('This is a button!')}
title="Info"
color="#fff"
/>
)
};
render() {
return(
<View>
<Text>This is a test</Text>
</View>
)
}
}