[英]Undefined error when trying to stop webView loading in react-native
After looking through the react-native docs and various answers on here, I can see: 在浏览了本机文档和各种答案之后,我可以看到:
this.refs[WEBVIEW_REF].stopLoading();
is used to stop the webView from continuing to load. 用于阻止webView继续加载。
I've tried this but always get an: 我已经尝试过了,但是总是得到:
undefined is not an object (evaluating 'this.refs[WEBVIEW_REF]')
My code is as follows and I'm trying to stop the app from loading the help page and launch in a browser rather than the app. 我的代码如下,并且我试图阻止该应用程序加载帮助页面并在浏览器而不是应用程序中启动。
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
View,
WebView,
Linking,
} from 'react-native';
const HEADER = '#3b5998';
const BGWASH = 'white';
const WEBVIEW_REF = 'webview';
const DEFAULT_URL = 'https://somesite.com/';
export default class reactNativeApp extends Component {
state = {
url: DEFAULT_URL,
scalesPageToFit: true,
};
_onShouldStartLoadWithRequest(e) {
if (e.url.indexOf('assistenza') >= 0) {
Linking.openURL(e.url);
return false
}
return true
}
_onNavigationStateChange(e) {
if (e.url.indexOf('assistenza') >= 0) {
this.refs[WEBVIEW_REF].stopLoading();
Linking.openURL(e.url);
return false
}
return true
}
render() {
return (
<View>
<WebView
ref={WEBVIEW_REF}
automaticallyAdjustContentInsets={false}
style={styles.webView}
source={{uri: this.state.url}}
javaScriptEnabled={true}
domStorageEnabled={true}
decelerationRate="normal"
startInLoadingState={true}
scalesPageToFit={this.state.scalesPageToFit}
onShouldStartLoadWithRequest={this._onShouldStartLoadWithRequest}
onNavigationStateChange={this._onNavigationStateChange}
/>
</View>
);
}
}
AppRegistry.registerComponent('reactNativeApp', () => reactNativeApp);
Any thoughts on why this is? 有什么想法为什么呢? Every example I've seen used it :/ 我见过的每个例子都使用它:/
You need to bind the function using either: 您需要使用以下任一方法绑定功能:
constructor (props) {
super(props)
this._onNavigationStateChange = this._onNavigationStateChange.bind(this)
}
Or in render
: 或在render
:
onNavigationStateChange={this._onNavigationStateChange.bind(this)}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.