【问题标题】:How does the app life cycle works in React-Native?应用程序生命周期如何在 React-Native 中工作?
【发布时间】:2019-06-06 09:02:14
【问题描述】:

我有一个带有 react-navigation 的 React-Native 应用程序。我们决定使用一个顶级 navigator 并使用操作进行导航。

这一切都像一个魅力,除了当应用程序进入后台并回到前台时。如果操作系统没有终止应用程序(当您将其保持在后台太久或执行其他内存密集型操作时),一切都很好,但是当操作系统决定终止它时,应用程序会在打开时重新加载。这就是奇怪的事情发生的地方:很多代码正在重新执行(例如 app.js 正在重新执行),但很多代码却没有(例如静态 js 类)。

所以我的问题是: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通过actions调用的:

let _navigator;

function setNavigator(navigatorRef) {
  _navigator = navigatorRef;
}

//All navigate functions

上面的代码在重新启动之前就像一个魅力,然后一个新的导航器被附加到这里,但旧的导航器仍然存在并给出了大量的错误。我试图不更换导航器,这可以防止错误,但是通过 App.render() 新的导航器仍然存在,并且您被卡在初始屏幕上。

我想了解更多关于 React-Native 如何处理此应用重新加载的内部信息,但如果您对此特定问题有解决方案,请分享!

【问题讨论】:

    标签: javascript android react-native react-navigation redux-saga


    【解决方案1】:

    你可以在你的app.js中添加像componentDidMount这样的生命周期函数。我不知道哪些js-classs没有被重新执行。你能展示一些示例代码吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多