gesturesEnabled: false 不适用于我的反应导航设置
gesturesEnabled: false doesn't work for my react-navigation setup
export const AppNavigator = StackNavigator({
[strings.route_login]: {
screen: LoginScreen,
},
[strings.route_main]: {
screen: MainNavigator,
navigationOptions: {
gesturesEnabled: false,
}
},
},
{
headerMode: "none",
navigationOptions: {
gesturesEnabled: false,
}
}
);
我还想提一下,MainNavigator 是一个 DrawerNavigator,它的所有子项都关闭了 gesturesEnabled!不幸的是,我仍然可以在 ios!
中滑回登录屏幕
您需要将 gesturesEnabled
道具移到 navigationOptins
之外:
export const AppNavigator = StackNavigator({
[strings.route_login]: {
screen: LoginScreen,
},
[strings.route_main]: {
screen: MainNavigator,
navigationOptions: {
gesturesEnabled: false,
}
},
},
{
headerMode: "none",
gesturesEnabled: false,
}
);
这是我的代码:
export const AppNavigator = StackNavigator(MainAppRoutes, {
initialRouteName: 'firstscene',
headerMode: 'screen',
mode: Platform.OS === 'ios'
? 'modal'
: 'card',
navigationOptions: {
cardStack: {
gesturesEnabled: false
}
}
});
您应该将 gesturesEnabled 放在 cardStack 中。
import React from 'react';
import { Alert, BackHandler } from 'react-native';
import { useFocusEffect } from '@react-navigation/native';
const BackButtonExitHandler = () => {
useFocusEffect(
React.useCallback(() => {
const backAction = () => {
Alert.alert('Exit Application!', 'Are you sure you want to exit ?', [
{
text: 'Cancel',
onPress: () => null,
style: 'cancel',
},
{ text: 'Exit', onPress: () => BackHandler.exitApp() },
]);
return true;
};
const backHandler = BackHandler.addEventListener(
'hardwareBackPress',
backAction
);
return () => backHandler.remove();
}, [])
);
};
export default BackButtonExitHandler;
在你不想返回的画面导入这个功能就可以了
export const AppNavigator = StackNavigator({
[strings.route_login]: {
screen: LoginScreen,
},
[strings.route_main]: {
screen: MainNavigator,
navigationOptions: {
gesturesEnabled: false,
}
},
},
{
headerMode: "none",
navigationOptions: {
gesturesEnabled: false,
}
}
);
我还想提一下,MainNavigator 是一个 DrawerNavigator,它的所有子项都关闭了 gesturesEnabled!不幸的是,我仍然可以在 ios!
中滑回登录屏幕您需要将 gesturesEnabled
道具移到 navigationOptins
之外:
export const AppNavigator = StackNavigator({
[strings.route_login]: {
screen: LoginScreen,
},
[strings.route_main]: {
screen: MainNavigator,
navigationOptions: {
gesturesEnabled: false,
}
},
},
{
headerMode: "none",
gesturesEnabled: false,
}
);
这是我的代码:
export const AppNavigator = StackNavigator(MainAppRoutes, {
initialRouteName: 'firstscene',
headerMode: 'screen',
mode: Platform.OS === 'ios'
? 'modal'
: 'card',
navigationOptions: {
cardStack: {
gesturesEnabled: false
}
}
});
您应该将 gesturesEnabled 放在 cardStack 中。
import React from 'react';
import { Alert, BackHandler } from 'react-native';
import { useFocusEffect } from '@react-navigation/native';
const BackButtonExitHandler = () => {
useFocusEffect(
React.useCallback(() => {
const backAction = () => {
Alert.alert('Exit Application!', 'Are you sure you want to exit ?', [
{
text: 'Cancel',
onPress: () => null,
style: 'cancel',
},
{ text: 'Exit', onPress: () => BackHandler.exitApp() },
]);
return true;
};
const backHandler = BackHandler.addEventListener(
'hardwareBackPress',
backAction
);
return () => backHandler.remove();
}, [])
);
};
export default BackButtonExitHandler;
在你不想返回的画面导入这个功能就可以了