[英]How does the app life cycle works in React-Native?
我有一個帶有react-navigation的React-Native應用程序。 我們決定使用一個頂級導航器並使用操作進行導航。
這一切都像魅力一樣,除非應用程序進入后台並返回前台。 如果操作系統沒有終止應用程序(當你將它保留在后台太長時間或做其他內存密集型的東西)時,一切都沒問題,但是當操作系統決定殺死它時,應用程序會在打開時重新加載。 這就是奇怪的事情發生的地方:許多代碼正在被重新執行(例如,app.js正在重新執行),但很多代碼不是(例如靜態js-classes)。
所以我的問題是:React-Native如何確定正在重啟的內容以及什么不是,它只是App.js和組件? 還有像redux,redux-saga等中間件框架會發生什么?
提供一個具體的例子:
App.js:
Navigator = createStackNavigator(routes, {headerMode: 'screen', initialRouteName: 'Launch'});
class App extends Component {
render() {
return (
<Provider store={store}>
<View style={{flex: 1}}>
<Navigator ref={navigatorRef => {NavigationService.setNavigator(navigatorRef)}}/>
</View>
</Provider>
)
}
}
NavigationService.js(靜態類,所有函數都是從saga通過動作調用的:
let _navigator;
function setNavigator(navigatorRef) {
_navigator = navigatorRef;
}
//All navigate functions
上面的代碼就像一個魅力,直到重新啟動,然后一個新的導航器附加到這里,但舊的導航器仍然存在,並提供了大量的錯誤。 我試圖不替換導航器,這可以防止錯誤,但是通過App.render()無論如何都會出現新的導航器,並且你被困在初始屏幕上。
我想在React-Native如何處理此應用程序重新加載方面有更多內容,但如果您有針對此特定問題的解決方案,請分享!
你可以在你的app.js.中添加像componentDidMount這樣的生命周期函數。我不知道哪些js-classs沒有被重新執行。你能展示一些示例代碼嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.