繁体   English   中英

尝试停止在react-native中加载webView时发生未定义的错误

[英]Undefined error when trying to stop webView loading in react-native

在浏览了本机文档和各种答案之后,我可以看到:

this.refs[WEBVIEW_REF].stopLoading();

用于阻止webView继续加载。

我已经尝试过了,但是总是得到:

undefined is not an object (evaluating 'this.refs[WEBVIEW_REF]')

我的代码如下,并且我试图阻止该应用程序加载帮助页面并在浏览器而不是应用程序中启动。

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);

有什么想法为什么呢? 我见过的每个例子都使用它:/

您需要使用以下任一方法绑定功能:

constructor (props) {
  super(props)

  this._onNavigationStateChange = this._onNavigationStateChange.bind(this)
}

或在render

onNavigationStateChange={this._onNavigationStateChange.bind(this)}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM