728x90
리액트 네이티브 버전 : "react-native": "0.73.2"
728x90
지난 포스팅에서 간단하게 웹뷰를 구현했는데
해봤으면 문제를 알 수 있다.
웹뷰 상에서 뒤로가기가 안되고 앱이 꺼져버리는 문제인데,
이를 처리해줘야 한다.
1. 코드 작성
import React, { useEffect, useRef, useCallback } from 'react';
import { StyleSheet, SafeAreaView, BackHandler } from 'react-native';
import { WebView } from 'react-native-webview';
export default function App() {
const webviewRef = useRef(null);
const backPress = useCallback(() => {
if (webviewRef.current) {
webviewRef.current.goBack();
return true; // prevent default behavior (exit app)
}
return false;
}, []);
useEffect(() => {
BackHandler.addEventListener('hardwareBackPress', backPress);
return () => {
BackHandler.removeEventListener('hardwareBackPress', backPress);
};
}, [backPress]);
return (
<>
<SafeAreaView style={styles.container}>
<WebView
ref={webviewRef}
source={{ uri: 'https://www.naver.com/' }}
/>
</SafeAreaView>
</>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
},
});
2. 결과 확인
끝!
728x90
'개발 > RN' 카테고리의 다른 글
[RN] expo eas 관련 명령어 정리 (203) | 2024.05.09 |
---|---|
[RN] expo 앱 테스트 하기 (188) | 2024.04.25 |
[RN] WebView 구현하기 (149) | 2024.01.24 |
[RN] React Native CLI vs Expo CLI (81) | 2023.11.05 |
[RN] 카카오톡 로그인 구현하기 (1) | 2023.01.20 |