Reputation: 33
How to disable ability to go back
I have a functional component
export default function App(){
createHomeStackNavigator = () =>
<Stack.Navigator screenOptions={{
headerShown: false
}}>
<Stack.Screen
name="Login"
component={Login}
/>
<Stack.Screen
name="Home"
children={createHomeTabNavigator}
/>
</Stack.Navigator>
return(
<NavigationContainer>
{createHomeStackNavigator()}
</NavigationContainer>
)
When user goes to Home, its onclick on Login component then he cant go back to the login by any swipe on ios, back button on Android and other ways
Upvotes: 0
Views: 450
Reputation: 49182
When you set up StackNavigatorParams
set redirect
param for Login
screen
import { createStackNavigator} from "@react-navigation/stack";
export type StackNavigatorParams = {
Home: undefined;
Settings: undefined;
Login: { redirect: keyof StackNavigatorParams } | undefined;
};
const Stack = createStackNavigator<StackNavigatorParams>();
Now inside loginHandler
when the user press LoginButton
you set the redirect
param. When stack navigator ever detects redirecting to "Login" page it will redirect the user to the "Home" screen
export default function Login({ navigation, route }: LoginProps): ReactElement {
const [formState, setFormState] = useState({
username: "username",
password: ""
});
const redirect = route.params?.redirect;
const login = async () => {
const { username, password } = formState;
try {
await yourSignInFunction(username, password);
// "replace", if we go back, we go back to "Home" not to Login
redirect ? navigation.replace(redirect) : navigation.navigate("Home");
} catch (e) {}
};
return <Button onPress={login} />;
}
Upvotes: 0