每次打开时如何强制重新加载webview资源(忽略webview缓存)?

时间:2017-11-22 02:48:35

标签: caching react-native webview

我发现它在第一次加载后立即从缓存中打开webview页面。它无法在webview页面上看到更新的内容。

===编辑====

我的网页视图代码

subModuleUrl可以是静态html或纯域

render() {
    const { subModuleUrl } = this.props   // the webview url, like: http://a.example.url.com/index.html
    const { isWebViewLoadFails } = this.state

    return (
      <View style={ApplicationStyles.screen.mainContainer}>
        {
          isWebViewLoadFails ?
            <View style={styles.errorShow}>
              <Text>Load fail</Text>
            </View>
            :
            <WebView
              style={{ flex: 1 }}
              startInLoadingState={false}
              ref={webview => { this.webview = webview }}
              source={{ uri: subModuleUrl }}
              javaScriptEnabled
              injectedJavaScript={WebViewBridge}
              onNavigationStateChange={this.onNavigationStateChange}
              automaticallyAdjustContentInsets={false}
              onMessage={this.handleMessage}
              onLoadStart={this.onWebViewLoadStart}
              onError={this.onErrorLoad}
              scalesPageToFit={false}
              domStorageEnabled
            />
        }
      </View>
    )
  }

1 个答案:

答案 0 :(得分:0)

如果您在componentDidMount中设置了初始状态,则会发生此缓存。 重新加载Webview时,不会再次调用此生命周期方法。

另一种方法是在自定义方法mySetInitialState()中设置初始状态,然后从NavigationEvents-> onDidFocus方法的render函数中调用它。这是可以做到的:

首次导入NavigationEvents

import {NavigationEvents} from 'react-navigation';

然后将此组件添加到render返回中的任意位置:

<NavigationEvents onDidFocus={this.mySetInitialState.bind(this)} />

然后将所有初始状态逻辑从componentsDidMount移至 您的自定义方法mySetState

这可以确保您看不到任何缓存行为。