Как загрузить Webview через некоторое время в методе рендеринга React Native - PullRequest
0 голосов
/ 09 мая 2019

Мы используем Webview в нашем собственном проекте реакции для загрузки URL-адреса и отображения некоторой веб-страницы.Загружается успешно.Но в Android возникает проблема.

Требуется некоторое время для загрузки в iOS и Android, но в Android скрывается панель навигации и кнопка назад, но в iOS навигация отображается всегда.

Но, если я прокомментирую код веб-просмотра, заголовок навигации и кнопка "Назад" сразу же будут показаны.

Я попытался использовать какое-то значение флага, но оно вызывает ошибки.

constructor(props) {
    super(props);
    this.state = {
     shouldShowWebView: false,
    };

  componentDidMount() {
    this.setState({
      shouldShowWebView: true,
    });
  }

     render() {
const injectedJs = `
    window.postMessage(window.location.href);
  `;
    const {
      shouldShowWebView,
    } 

      <SafeAreaView style={{ flex: 1, backgroundColor: '#fff' }}>
        <View style={styles.container}>
          <View style={styles.headerView}>
            <View style={styles.navigationActionBar}>
              <View style={styles.backButtonContainer}>
                <IconButton
                  style={styles.backBtn}
                  image={images.back}
                  pressed={handlerGo}
                />
              </View>
            <WebView
              source={{ uri: 'someURL' }}
              style={styles.webView}
              onLoad={() => this.hideSpinner()}
              injectedJavaScript={injectedJs}
              scalesPageToFit
              onNavigationStateChange={this.handleNavigationStateChange}
              ref={(ref) => { this.webview = ref; }}
              onError={(err) => {
              }}
            />
        </View>
      </SafeAreaView>
    );
  }

В классе стилей

webView: {
    backgroundColor: 'white',
    height: '75%',
    width: '100%',
    marginBottom: 20,
  },

Мое требование: не следует скрывать панель навигации и кнопку возврата, которая нормально работает в iOS.

Проблема возникает только на устройствах Android.

Есть предложения?

...