-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMyWeb.js
58 lines (50 loc) · 1.63 KB
/
MyWeb.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import React, { Component } from 'react';
import {Text, BackHandler} from "react-native";
import { WebView } from 'react-native-webview';
export default class MyWeb extends Component {
webView = {
canGoBack: false,
ref: null,
};
static navigationOptions = ({ navigation }) => ({
title: `${navigation.state.params.desc}`,
headerStyle: {
backgroundColor: '#549cf8',
},
headerTintColor: '#fff',
});
onAndroidBackPress = () => {
// this.webView.ref = null;
if (this.webView.canGoBack && this.webView.ref) {//直接用对象判断,就表示它不等于null,比如这里的this.webView.ref
this.webView.ref.goBack();
return true;
}
return false;
};
componentWillMount() {
if (Platform.OS === 'android') {
BackHandler.addEventListener('hardwareBackPress', this.onAndroidBackPress);
}
}
componentWillUnmount() {
if (Platform.OS === 'android') {
BackHandler.removeEventListener('hardwareBackPress', this.onAndroidBackPress);
}
}
render() {
const { navigation } = this.props;
const url = navigation.getParam('url');
if (url === null || url === '') {
return (
<Text>链接错误</Text>
);
}
return (
<WebView
ref={(webView) => { this.webView.ref = webView; }}
source={{ uri: url }}
onNavigationStateChange={(navState) => { this.webView.canGoBack = navState.canGoBack; }}
/>
);
}
}