web-dev-qa-db-fra.com

Comment détecter quand une React application native est fermée (pas suspendue)?

J'ai regardé partout et je ne trouve pas de réponse à cela. Comment puis-je détecter lorsqu'un utilisateur essaie de fermer mon React application native (comme dans le processus en cours, et ils gèrent manuellement leurs applications et forcent à la quitter). Je voudrais ajouter la déconnexion lorsque cela se produit, cependant, ne peut pas trouver un moyen de le détecter. AppState semble détecter uniquement lorsque l'application est mise en et hors de l'arrière-plan.

39
Dale_Plante

Il semble que vous puissiez détecter l'état précédent et le comparer à l'état suivant. Vous ne pouvez pas détecter que l'application se ferme par rapport à l'arrière-plan, d'après ce que je peux trouver en ligne, mais vous pouvez détecter si elle était inactive (fermée) ou dans le background.

Exemple de React Native Docs

import React, {Component} from 'react'
import {AppState, Text} from 'react-native'

class AppStateExample extends Component {

  state = {
    appState: AppState.currentState
  }

  componentDidMount() {
    AppState.addEventListener('change', this._handleAppStateChange);
  }

  componentWillUnmount() {
    AppState.removeEventListener('change', this._handleAppStateChange);
  }

  _handleAppStateChange = (nextAppState) => {
    if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
      console.log('App has come to the foreground!')
    }
    this.setState({appState: nextAppState});
  }

  render() {
    return (
      <Text>Current state is: {this.state.appState}</Text>
    );
  }

}
17
user888750

Comme méthode simple, nous pouvons utiliser componentWillUnmount () à l'intérieur de composant racine pour détecter que l'application est fermée. Parce que le composant racine ne se démonte que lorsque l'application est fermée. :)

0
Rid