#react-native #react-native-navigation
#react-native #react-native-навигация
Вопрос:
В App.js У меня есть следующий навигатор стека:
<NavigationContainer>
<Stack.Navigator>
{user ? (
<Stack.Screen name="Home">
{(props) => <HomeScreen {...props} extraData={user} />}
</Stack.Screen>
) : (
<>
<Stack.Screen name="Login" component={LoginScreen} />
<Stack.Screen name="Registration" component={RegistrationScreen} />
<Stack.Screen name="Profile" component={ProfileScreen} />
</>
)}
</Stack.Navigator>
</NavigationContainer>
На рабочем столе я пытаюсь перейти к экрану «Профиль»:
export default function HomeScreen(props) {
const onProfilePress = () => {
props.navigation.navigate('Profile')
};
return (
<View style={styles.container}>
<TouchableOpacity style={styles.button} onPress={onProfilePress}>
<Text style={styles.buttonText}>Profile</Text>
</TouchableOpacity>
</View>
);
}
Тем не менее, я получаю
The action 'NAVIGATE' with payload {"name":"Profile"} was not handled by any navigator.
Кто-нибудь знает, как исправить?
Ответ №1:
Profile
является только частью стека, когда user
имеет значение true. Возможно, вы хотели сделать что-то вроде этого:
<NavigationContainer>
<Stack.Navigator>
{user ? (
<>
<Stack.Screen name="Home">
{(props) => <HomeScreen {...props} extraData={user} />}
</Stack.Screen>
<Stack.Screen name="Profile" component={ProfileScreen} />
</>
) : (
<>
<Stack.Screen name="Login" component={LoginScreen} />
<Stack.Screen name="Registration" component={RegistrationScreen} />
</>
)}
</Stack.Navigator>
</NavigationContainer>
Комментарии:
1. Это сработало! Спасибо за вашу помощь. Действительно ценю это
2. После выхода из системы я пытаюсь перенаправить обратно на логин. Но я сталкиваюсь с той же проблемой. Возможен ли этот поток? Если нет, могу ли я каким-либо образом отключить возможность возврата к экрану входа в систему?