Я получаю сообщение об ошибке в заголовке приложения React-Native, над которым я сейчас работаю.
Я часами занимался поиском и устранением неисправностей, и похоже, что онлайн-решения нет.
Из того, что я понял, следующий хук const [isOpen, setIsOpen] = useState(false);
вызывает проблему здесь, возможно, из-за порядка хуков. Этот хук используется для переключения меню, которое у меня есть. Однако, когда я пытаюсь перейти на другой экран <TouchableOpacity onPress={() => navigation.navigate('Job')}>
(из стека экрана, а не из модального или карточного), приложение разрывается, и я получаю ошибку. Если я закомментирую однолинейный хук const [isOpen, setIsOpen] = useState(false);
, навигация будет работать отлично.
Решение будет с благодарностью.
config. js
export const sharedScreenOptions = (props) => {
const [isOpen, setIsOpen] = useState(false);
const toggleMenu = () => {
setIsOpen(!isOpen);
LayoutAnimation.easeInEaseOut();
};
return {
headerBackTitleVisible: false,
header: (props) => {
return (
<>
<GradientHeader isOpen={isOpen} {...props} />
{isOpen ? (
<TouchableOpacity
style={{
height: Dimensions.get('window').height,
width: Dimensions.get('window').width,
backgroundColor: 'rgba(42, 44, 65, 0.5)',
position: 'absolute',
zIndex: -999,
}}
onPress={() => toggleMenu()}></TouchableOpacity>
) : null}
</>
);
},
headerRight: () => {
return (
<View style={styles.iconContainer}>
<TouchableOpacity onPress={() => navigation.navigate('Job')}>
<MailButton navigation={props.navigation} />
</TouchableOpacity>
<NotificationButton navigation={props.navigation} />
<TouchableOpacity onPress={() => toggleMenu()}>
{isOpen ? <CloseButton /> : <HamburgerButton />}
</TouchableOpacity>
</View>
);
},
headerStyle: {
backgroundColor: 'transparent',
},
};
};
Навигация. js
const JobboardStack = createStackNavigator();
const JobboardStackScreens = () => {
return (
<JobboardStack.Navigator
initialRouteName="Jobboard"
screenOptions={sharedScreenOptions}>
<JobboardStack.Screen
name="JobBoard"
component={JobboardScreen}
options={{
headerTintColor: '#FFFFFF',
headerTitleStyle: {
fontFamily: 'Raleway-Regular',
fontWeight: '500',
opacity: 0,
},
}}
/>
<JobboardStack.Screen
name="Job"
component={JobScreen}
options={{
headerTintColor: '#FBF7EF',
}}
/>
</JobboardStack.Navigator>
);
};