我发现它在第一次加载后立即从缓存中打开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>
)
}
答案 0 :(得分:0)
如果您在componentDidMount
中设置了初始状态,则会发生此缓存。
重新加载Webview
时,不会再次调用此生命周期方法。
另一种方法是在自定义方法mySetInitialState()
中设置初始状态,然后从NavigationEvents
-> onDidFocus
方法的render函数中调用它。这是可以做到的:
首次导入NavigationEvents
import {NavigationEvents} from 'react-navigation';
然后将此组件添加到render
返回中的任意位置:
<NavigationEvents onDidFocus={this.mySetInitialState.bind(this)} />
然后将所有初始状态逻辑从componentsDidMount
移至
您的自定义方法mySetState
这可以确保您看不到任何缓存行为。