# ReactNativeWebviewBack
**Repository Path**: scenario-samples/react-native-webview-back
## Basic Information
- **Project Name**: ReactNativeWebviewBack
- **Description**: 在应用开发中,经常需要层层浏览网页。在当前的RN框架开发过程中,根据react-native-webview三方库指导打开一个网址,网页浏览过程中侧滑不会返回上一个页面,而是直接退出应用。BackHandler.addEventListener('hardwareBackPress', callback)是RN提供的用于监听返回键的API,可用于自定义返回行为,当未自定义返回行为时为默认动作退出A
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-19
- **Last Updated**: 2025-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 浏览网页时如何通过侧滑返回上一层并规避导航栏demo
## 场景介绍
在应用开发中,经常需要层层浏览网页。在当前的RN框架开发过程中,根据[react-native-webview](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-webview.md)三方库指导打开一个网址,网页浏览过程中侧滑不会返回上一个页面,而是直接退出应用。BackHandler.addEventListener('hardwareBackPress', callback)是RN提供的用于监听返回键的API,可用于自定义返回行为,当未自定义返回行为时为默认动作退出App。
本示例使用[@react-native-webview](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-webview.md)实现浏览网页时支持侧滑返回上一页
,[@react-native-safe-area-context](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-safe-area-context.md)实现导航栏规避。
。
## 效果预览
## 实现思路
1. 通过BackHandler.addEventListener('hardwareBackPress', callback)函数添加返回按钮监听事件
```
useEffect(() => {
// 添加返回按键监听
BackHandler.addEventListener('hardwareBackPress', handleBackButton);
// 组件卸载时移除监听
return () => {
BackHandler.removeEventListener('hardwareBackPress', handleBackButton);
};
}, []);
```
2. 自定义处理返回按键事件
```
// 处理返回按键事件
const handleBackButton = (): boolean => {
if (canGoBack.current) {
webViewRef.current?.goBack();
return true; // 表示已经处理了返回事件
}
return false; // 没有处理返回事件,允许默认行为
};
```
3. 加载网页并规避导航栏
```
```
## 约束与限制
- 本示例支持API Version 20 Release及以上版本。
- 本示例支持HarmonyOS 6.0 Release SDK及以上版本。
- 本示例需要使用DevEco Studio 6.0 Release及以上版本进行编译运行。
- 本示例使用0.72.5版本RNOH。
## 工程目录
```
ReactNativeWebviewBack // RN工程
├──harmony // harmony工程
│ ├──entry/src/main/cpp // native相关配置
│ │ ├──generated // codegen自动生成的桥接代码
│ │ ├──CMakeLists.txt
│ │ └──PackageProvider.cpp
│ ├──entry/src/main/ets
│ │ ├──entryability
│ │ │ └──EntryAbility.ets
│ │ ├──entrybackupability
│ │ │ └──entrybackupability.ets
│ │ ├──pages
│ │ │ └──Index.ets // harmony侧入口
│ │ └──RNPackagesFactory.ets
│ └──entry/src/main/resources/rawfile // bundle、静态资源存放目录
├──App.tsx // 浏览网页时支持侧滑返回上一页&&导航栏规避
├──index.js // 入口文件
├──metro.config.js // 打包配置
```
## 参考文档
[@react-native-webview](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-webview.md)
[@react-native-safe-area-context](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-safe-area-context.md)