尝试停止在 react-native 中加载 webView 时出现未定义错误

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

在浏览了这里的 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)}