Я создаю Webview в реагирующем родном языке, но когда я перехожу на любую страницу и пытаюсь перейти назад, приложение закрывается.
Я прочитал некоторые ответы в STACK-OVERFLOW и попробовал некоторый код для обработкикнопка назад андроида, но это не помогло.
Вот код, который пытался:
import {
SafeAreaView,
StyleSheet,
ScrollView,
View,
Text,
StatusBar,
BackHandler,
} from 'react-native';
import WebView from 'react-native-webview';
const App: () => React$Node = () => {
const [canBack, setCanBack] = useState(false);
useEffect(() => {
this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);
console.log('mounted')
return () => {
this.backHandler.remove()
console.log('unmounted')
}
}, [canBack]);
handleBackPress = () => {
console.log('back btn pressed')
console.log('canBack is '+canBack)
if(canBack) {
this.refs[myWebView].goBack();
return true;
}
}
onNavigationChange = (navState) => {
console.log(navState);
// console.log(navState.canGoBack)
setCanBack(currentCanBack => navState.canGoBack);
console.log(canBack);
};
return (
<SafeAreaView style={{ flex: 1,}}>
<StatusBar barStyle="dark-content" />
<WebView
ref={(c) => {this.myWebView = c} }
source={{ uri: 'https://infinite.red' }}
domStorageEnabled={true}
onNavigationStateChange={(navState) => this.onNavigationChange(navState)}
/>
</SafeAreaView>
);
};
const styles = StyleSheet.create({
scrollView: {
flex: 1,
backgroundColor: 'lightgrey',
justifyContent: 'center',
alignItems: 'center',
},
});
export default App;
В этом, когда я нажимаю кнопку назад, это дает мне ошибку "Невозможно прочитать свойство '#' неопределенного собственного ответа"