Я расскажу вам, как я реализовал то же самое. Я не доверяю реагировать навигационные пользовательские заголовки. Поэтому я сначала отключил заголовок реагирующей навигации:
{
defaultNavigationOptions: {
headerShown: false,
},
initialRouteName: 'HomeCard',
transitionConfig: () => fromRight(),
},
в вашем стековом навигаторе.
Теперь я создал глобальный компонент заголовка, который можно использовать повсюду, например:
export default class Header extends Component {
constructor(props) {
super(props);
this.state = {};
}
render() {
return (
<View style={headerStyles.newHeaderStyle}>
<View style={{opacity: 0}}>
<Image source={require('../assets/images/crossIcon.png')} />
</View>
<View style={{flexShrink: 1}}>
<Text style={headerStyles.headerText}>{this.props.title}</Text>
</View>
<View style={{left: -20, paddingLeft: 10, marginLeft: 10}}>
<TouchableOpacity
style={headerStyles.imageView}
hitSlop={{top: 20, bottom: 20, left: 50, right: 50}}
onPress={() => this.props.navigation.goBack()}>
<Image
style={{height: 15, width: 15}}
source={require('../assets/images/crossIcon.png')}
/>
</TouchableOpacity>
</View>
</View>
);
}
}
, а затем на любой странице, где я хочу этот заголовок, я просто делаю:
import Header from '../components/Header';
class Home extends Component {
render() {
return (
<SafeAreaView style={{flex: 1}}>
<Header navigation={this.props.navigation} title="SUPPORT" />
<ScrollView style={supportStyles.view1}>
{this.renderSupportData()}
</ScrollView>
</SafeAreaView>
);
}
}
Надеюсь, это поможет. не стесняйтесь сомнений