簡體   English   中英

應用程序生命周期如何在React-Native中運行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM