我目前有一個SplashScreen組件,我將首先渲染,直到我的狀態被設置。我想以某種方式找到一種方法,如何仍然顯示這個組件,而我的webview加載。我將onLoadEnd添加到了我的webview中,看起來好像當我的消息在完成加載後返回時,問題是如果我先加載splashscreen並等待狀態在onEndEnd上更改,但實際上不會更改,因爲webview尚未渲染。有沒有一個好的方法來做到這一點?React-Native:顯示加載屏幕直到加載webview
4
A
回答
17
我的解決方案其實很簡單,WebView組件可以有param renderLoading,這對我來說並不奏效,我發現這是因爲還需要定義startInLoadingState。
所以我的WebView看起來在某種程度上是這樣的:
<WebView
ref={MY_REF}
source={source}
renderLoading={this.renderLoading}
startInLoadingState
/>
2
我有一個類似的問題,我設法與這個暫時解決它:
loadEnd() {
this.setState({ webViewLoaded: true }):
}
render() {
const { webViewLoaded } = this.state;
return (<View>
{!webViewLoaded && <LoadingComponent /> } -- or spinner, whatever
<WebView
style={(webViewLoaded) ? styles.webView : styles.loading}
onLoadEnd={() => this.loadEnd.bind(this)} />
</View);
}
const styles = StyleSheet.create({
webView: { -- your styles ---},
loading: {
width: 0,
heigt: 0
}
});
不知道究竟這可以幫助你,但你可以嘗試類似的做法。我可能會改變這個更方便的東西。不確定是否有可能對這些更改進行動畫處理,因爲我在React Native中仍然非常新手。
編輯:增加了隱藏微調/加載部件
9
這將是我的做法:
constructor(props){
super(props);
this.state = { webviewLoaded: false };
}
_onLoadEnd() {
this.setState({ webviewLoaded: true });
}
render() {
return(
<View>
{(this.state.webviewLoaded) ? null : <SplashScreen />}
<WebView onLoadEnd={this._onLoadEnd.bind(this)} />
</View>
)
}
這種方式,web視圖呈現,但它被放置在SplashScreen
後面。因此,在顯示SplashScreen
時,webview開始加載。
相關問題
- 1. 如何顯示加載屏幕,直到完成asynctask加載
- 2. Webview不加載poupup - ReactNative
- 3. React SPA - 顯示加載屏幕,直到呈現多個組件
- 4. 在android中加載屏幕並顯示,直到網絡建立
- 5. 加載webview之前,黑屏已顯示
- 6. javascript加載屏幕,直到數據加載
- 7. Angular 4正確顯示加載屏幕
- 8. 在vb.net中顯示加載屏幕
- 9. 如何顯示加載屏幕統一?
- 10. 無法在Android webview中加載屏幕?
- 11. 黑莓加載屏幕:按回到去加載屏幕
- 12. 如何顯示加載屏幕,而網站內容加載
- 13. 加載網址到WebView時顯示ProgressBar
- 14. MonoTouch:加載屏幕
- 15. as3加載屏幕
- 16. WPf加載屏幕
- 17. 在子選項卡上顯示進度條,直到WebView加載
- 18. 直到webView加載顯示啓動圖像
- 19. 進度條應顯示在屏幕上,直到網頁加載完畢
- 20. 顯示加載屏幕,直到數據填充 - 反應和流星
- 21. 加載直到Ajax加載
- 22. 顯示加載功能,直到JSON數據加載從API
- 23. 加載圖像直到頁面加載後才顯示。
- 24. 顯示正在加載圖像,直到內容完全加載
- 25. 顯示圖像,直到內容加載
- 26. Xcode顯示加載視圖,直到第二個視圖加載(在segue顯示)
- 27. 自定義字體直到顯示時才加載(顯示時不加載:none)
- 28. 加載到WebView中
- 29. 當WebView在Android中加載頁面時顯示「加載」圖像
- 30. WebView在加載時顯示文本
這幫了我很多。奇蹟般有效。 對於renderLoading,你甚至可以使用一個箭頭函數,如: 'renderLoading = {()=> {return( }' 但是這對我也有一點小Bug如果你通過arrow-Funktion它被放置在上面,centerd 在默認本地函數: '函數renderLoading(){ 回報( ); } '和像您所描述loadign它,它很好地centerd在中間。屏幕 我不知道爲什麼,但也許這有助於某人節省一些時間:) –
suther
謝謝,這是要走的路,或作爲薩瑟評論'renderLoading = {()=> {return( )}'但裝載程序的位置與你聲明或調用你的函數無關!如果你不設計你的ActivityIndicator組件,它將會出現在頂部以橫向爲中心。爲了使ti居中verticaly也添加樣式如下: ' ' –
razbard