在使用React Native時,我偶然發現了一個我不確定如何解決的問題。我有一個主要NavigatorIOS
查看其中的內容push
和pop
各地的意見。我最初設置的方式是,網絡請求將在componentDidMount
開始。然而,開始發生的事情是,導航的「推動」(移動到下一個屏幕的動畫)將被延遲直到實際請求完成(即使加載使用fetch
,承諾和async/await
函數) 。我設法通過將網絡請求代碼包裝在setTimeout(fn, 0)
調用中來抵消大部分這些問題,但我不確定這是否是處理此問題的正確方法。和InteractionManager.runAfterInteractions
都沒有工作,甚至setTimeout
是finicky。有沒有更好的方法來做到這一點?React Native:何時/如何啓動網絡請求?
爲了方便說明,這大約是我的代碼是如何工作的(僞代碼):
屏幕1:
<TouchableHighlight onPress={() => this.navigator.push({ data })} />
屏幕2:
componentDidMount() {
this.startLoading();
}
startLoading() {
this.setState({ items: [], loading: true });
this.load().then(items => this.setState({ items, loading: false }));
}
async load() {
const contents = await fetch(this.props.url);
// Process contents.
return items;
}