Leo*_*elo 6 react-native react-navigation react-navigation-v5
路线
import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
import { OrderProvider } from '../contexts/order';
import Home from '../pages/Home';
import Checkout from '../pages/Checkout';
import Success from '../pages/Checkout/success';
const AppStack = createStackNavigator();
const AppRoutes = () => (
<OrderProvider>
<AppStack.Navigator screenOptions={{ headerShown: false }}>
<AppStack.Screen name="Home" component={Home} /> <-- here
<AppStack.Screen name="Checkout" component={Checkout} />
<AppStack.Screen name="Success" component={Success} /> <--- here
</AppStack.Navigator>
</OrderProvider>
);
export default AppRoutes;
Run Code Online (Sandbox Code Playgroud)
import React from 'react';
import { View} from 'react-native';
const Success = () => {
return (
<View />
);
};
export default Success;
Run Code Online (Sandbox Code Playgroud)
您可以执行以下操作:
const Home = () => {
useFocusEffect(
React.useCallback(() => {
const onBackPress = () => {
return true;
};
BackHandler.addEventListener('hardwareBackPress', onBackPress);
return () =>
BackHandler.removeEventListener('hardwareBackPress', onBackPress);
}, []),
);
// ...
};
Run Code Online (Sandbox Code Playgroud)
const Success = ({navigation}) => {
useFocusEffect(
React.useCallback(() => {
const onBackPress = () => {
navigation.navigate('Home');
return true;
};
BackHandler.addEventListener('hardwareBackPress', onBackPress);
return () =>
BackHandler.removeEventListener('hardwareBackPress', onBackPress);
}, []),
);
// ...
};
Run Code Online (Sandbox Code Playgroud)
我已经将其设置为在调用事件时单击Home屏幕上的返回不会执行任何操作。truehardwareBackPress
对于Success屏幕,我导航回Home.
我认为这是您通过阅读问题所寻找的行为。
useFocusEffect重要的是,无论你在哪里使用react-navigation,都不要忘记导入它:
import { useFocusEffect } from '@react-navigation/native';
Run Code Online (Sandbox Code Playgroud)
何时返回true或false在hardwareBackPress事件处理函数中在反应导航文档中进行了解释:
从 onBackPress 返回 true 表示我们已经处理了该事件,react-navigation 的监听器将不会被调用,因此不会弹出屏幕。返回 false 将导致事件冒泡,并且反应导航的侦听器将弹出屏幕。
如果您想了解更多信息,请阅读此处的文档: https: //reactnavigation.org/docs/custom-android-back-button-handling/。
| 归档时间: |
|
| 查看次数: |
6610 次 |
| 最近记录: |