response-native-webview загрузить локальный HTML файл, но получил простой текст - PullRequest
1 голос
/ 07 апреля 2020

Я пытаюсь загрузить файл HTML, зависит от какого-то другого. js файл.

Поэтому я пишу такой код, но получил простой текст в веб-просмотре.

render = () => {
    let source;
    if (__DEV__) {
      source = require('./vendor/Editor/index.html');
    } else {
      source =
        Platform.OS === 'ios'
          ? require('./vendor/Editor/index.html')
          : {uri: 'file:///android_asset/vendor/Editor/index.html'};
    }

    return (
      <WebView
        startInLoadingState
        source={source}
        onMessage={this.handleMessage}
        automaticallyAdjustContentInsets={false}
        style={[
          AppStyles.container,
          styles.container,
          {height: this.state.visibleHeight},
        ]}
      />
    );
  };

enter image description here

И я упрощаю код, как этот, но он тоже не работает.

  render = () => {
    setTimeout(() => {
      this.webview.injectJavaScript(
        'window.ReactNativeWebView.postMessage(document.body.innerHTML)',
      );
    }, 3000);

    return (
      <WebView
        source={require('./vendor/GrEditor/index.html')}
        onMessage={e => console.log('e: ', e)}
      />
    );
  };

Извините за плохую грамматику.

1 Ответ

0 голосов
/ 28 апреля 2020

Чтобы загрузить локальный html файл в android, вам нужно использовать android путь к активу даже в режиме разработки. Таким образом, это будет выглядеть так:

let source = Platform.OS === 'ios'
          ? require('./vendor/Editor/index.html')
          : {uri: 'file:///android_asset/vendor/Editor/index.html'};

Скопируйте папку вашего поставщика в папку активов (project_folder\android\app\src\main\assets) из android.
Вот ссылка для вашей справки: https://github.com/react-native-community/react-native-webview/blob/master/docs/Guide.md#loading -local- html -файлы

...