React native 在特定屏幕中禁用后退按钮(反应导航堆栈)
你好强> 我需要禁用导航栏上的“后退”按钮。帮帮我 路线React native 在特定屏幕中禁用后退按钮(反应导航堆栈),react-native,react-navigation,react-navigation-v5,React Native,React Navigation,React Navigation V5,你好 我需要禁用导航栏上的“后退”按钮。帮帮我 路线 霍姆:我不想离开申请表 成功:我不想再去结帐了 从“React”导入React; 从'@react navigation/stack'导入{createStackNavigator}; 从“../contexts/order”导入{OrderProvider}; 从“../pages/Home”导入主页; 从“../pages/Checkout”导入签出; 从“../pages/Checkout/Success”导入成功; const
- 霍姆:我不想离开申请表
- 成功:我不想再去结帐了
从“React”导入React;
从'@react navigation/stack'导入{createStackNavigator};
从“../contexts/order”导入{OrderProvider};
从“../pages/Home”导入主页;
从“../pages/Checkout”导入签出;
从“../pages/Checkout/Success”导入成功;
const AppStack=createStackNavigator();
常数批准=()=>(
您可以执行以下操作:
const Home = () => {
useFocusEffect(
React.useCallback(() => {
const onBackPress = () => {
return true;
};
BackHandler.addEventListener('hardwareBackPress', onBackPress);
return () =>
BackHandler.removeEventListener('hardwareBackPress', onBackPress);
}, []),
);
// ...
};
我将其设置为,当调用硬件backpress
事件时,单击主页
屏幕返回真
不会产生任何效果
对于Success
屏幕,我导航回Home
我想这就是你在阅读你的问题时寻找的行为
重要的是不要忘记从导入useFocusEffect
无论您在何处使用它,都会对导航作出反应:
import { useFocusEffect } from '@react-navigation/native';
react导航文档中解释了在硬件backpress
事件处理程序函数中何时返回true
或false
:
从onBackPress返回true表示我们已经处理了
事件和react导航的侦听器将不会被调用,因此不会被调用
弹出屏幕。返回false将导致事件冒泡
导航的侦听器将弹出屏幕
如果您想阅读更多内容,请阅读以下文档:
const Home = () => {
useFocusEffect(
React.useCallback(() => {
const onBackPress = () => {
return true;
};
BackHandler.addEventListener('hardwareBackPress', onBackPress);
return () =>
BackHandler.removeEventListener('hardwareBackPress', onBackPress);
}, []),
);
// ...
};
const Success = ({navigation}) => {
useFocusEffect(
React.useCallback(() => {
const onBackPress = () => {
navigation.navigate('Home');
return true;
};
BackHandler.addEventListener('hardwareBackPress', onBackPress);
return () =>
BackHandler.removeEventListener('hardwareBackPress', onBackPress);
}, []),
);
// ...
};
import { useFocusEffect } from '@react-navigation/native';