Pri*_*oka 1 reactjs react-native react-navigation
我在反应本机应用程序中使用反应导航。因此,我按照https://reactnavigation.org/docs/custom-android-back-button-handling/上的文档使用此代码片段实现自定义 Android 后退按钮行为。
屏幕一.js
import React, {useCallback} from 'react';
import {useFocusEffect} from '@react-navigation/native';
import {
View,
Text,
BackHandler,
} from 'react-native';
export function ScreenOne({navigation}) {
useFocusEffect(
useCallback(() => {
const onBackPress = () => {
if (isSelectionModeEnabled()) {
disableSelectionMode();
return true;
} else {
return false;
}
};
BackHandler.addEventListener('hardwareBackPress', onBackPress);
return () =>
BackHandler.removeEventListener('hardwareBackPress', onBackPress);
}, [isSelectionModeEnabled, disableSelectionMode])
);
return (
<View>
<Text>Demo</Text>
</View>
)
}
Run Code Online (Sandbox Code Playgroud)
堆栈.js
import React from 'react';
import {createStackNavigator, HeaderBackButton} from '@react-navigation/stack';
import {
ScreenOne,
ScreenTwo,
} from '../screens';
const Stack = createStackNavigator();
function AppStack() {
return (
<Stack.Navigator>
<Stack.Screen
name="ScreenTwo"
component={ScreenTwo}
options={{headerShown: false}}
/>
<Stack.Screen
name="ScreenOne"
component={ScreenOne}
options={({navigation}) => ({
headerShown: true,
headerLeft: () => (
<HeaderBackButton
onPress={() => {
navigation.replace('ScreenTwo');
}}
/>
),
})}
/>
</Stack.Navigator>
);
}
export default AppStack;
Run Code Online (Sandbox Code Playgroud)
根导航.js
import {createRef} from 'react';
export const isReadyRef = createRef();
export const navigationRef = createRef();
export function navigate(name, params) {
navigationRef.current?.navigate(name, params);
}
export function goBack() {
navigationRef.current?.goBack();
}
Run Code Online (Sandbox Code Playgroud)
应用程序.js
import 'react-native-gesture-handler';
import React from 'react';
import {NavigationContainer} from '@react-navigation/native';
import Stack from './navigators/Stack';
import {navigationRef} from './navigators/RootNavigation';
import {AuthContext} from './context';
const App = () => {
return (
<AuthContext.Provider>
<NavigationContainer ref={navigationRef}>
<Stack />
</NavigationContainer>
</AuthContext.Provider>
);
};
export default App;
Run Code Online (Sandbox Code Playgroud)
当我按下应用程序后退按钮时,我不断收到此错误:
ReferenceError:找不到变量:isSelectionModeEnabled
isSelectionModeEnabled这disableSelectionMode只是一个例子。类似于“如果 Modal 打开,则关闭它而不是向后导航,否则保留默认的后退按钮行为”。
您不需要它,您应该为自己的用例实现自己的逻辑并返回true以防止默认导航!返回false将保留默认的后退按钮行为。
如果您只是想在任何情况下阻止后退按钮,只需执行以下操作:
const onBackPress = () => {
return true;
};
Run Code Online (Sandbox Code Playgroud)
这里是相关文档: https: //reactnative.dev/docs/backhandler
| 归档时间: |
|
| 查看次数: |
1039 次 |
| 最近记录: |