2015-11-09 8 views
6

Ich muss einige Benutzerdaten wie Einstellungen, Login, Token usw. zwischen Sitzung speichern. Asyncstorage versucht, aber wenn ich App neu starte, werden Daten darin gelöscht. Habe einige Module gefunden, die auf keychain oder NSUserDefaults verweisen, aber ich weiß nicht, welche und welche davon für diesen Zweck gut sind.
Das Hauptmerkmal ist, dass ich diese Daten erhalten kann, auch nachdem die App beendet und neu gestartet wurde. Meistens auf iOS, aber wenn es auch auf Andorid wäre, wäre das großartig.
Jeder hatte etwas Erfahrung damit?React-native speichern Daten zwischen den Sessionen

EDIT:
Ich versuchte asyncstorage verwenden. Aber es macht nichts, wenn Sie App töten und neu starten.
Meinen Code zum Speichern von Daten:

AsyncStorage.setItem("prefix", responseData['prefix']) 
AsyncStorage.setItem("api_token", responseData['api_token']) 

und Abrufen von Daten:

async _checkAutoLogin(){ 
    var prefix; 
    var token; 
    try { 
     prefix = await AsyncStorage.getItem("prefix"); 
     token = await AsyncStorage.getItem("api_token"); 
} catch (error) { 
     AlertIOS.alert('AsyncStorage error: ' + error.message); 
    } 
+0

pls auf einige Code teilen, wie Sie asyncstorage verwenden (es gibt ein Versprechen) – Sulliwane

+0

meine Antwort bearbeitet und hinzugefügt Code. –

Antwort

0

Dies funktioniert auch nach der App neu zu starten:

_login:function(token){ 
    AsyncStorage.setItem('ApiToken',token, 
    () => this.setState({isLoggedIn:true}), 
     (error) => console.log(error) 
    ); 
    }, 
8

AsyncStorage sollten Sie Ihre Daten an das Gerät speichern, damit Sie es unabhängig davon, ob Ihre Anwendung bereits vor dem Hintergrund gesendet wurde zugreifen können oder hat kalt gestartet . Wenn Sie versuchen, das "await" -Schlüsselwort zu verwenden, denke ich, dass es einige zusätzliche Einstellungen gibt, die Sie tun müssen, um es zu starten. Here's a good article, damit Sie damit weitermachen.

auch, je nachdem, wie viel Sie beabsichtigt, mit AsyncStorage auf tun, sagt die Reaktion india Website dieses:

Es wird empfohlen, dass Sie eine Abstraktion auf der AsyncStorage anstelle von AsyncStorage direkt für etwas mehr als leichte Nutzung, da es global funktioniert.

Ich habe einen kleinen Wrapper geschrieben um es react-native-simple-store genannt, die nur AsyncStorage einpackt und stellt eine minimalistische API, sondern gibt Ihnen JSON.stringifying und JSON.parsing standardmäßig für komplexere Werte, so dass Sie nicht haben sich darum kümmern.

Oder wenn Sie am Ende benötigen mehr einer lokalen Datenbank there are other modules for that.

Hoffe, dass hilft!

0

Es gibt auch Realm für Native reagieren, die Ihnen eine vollständige lokale Datenbank gibt: https://realm.io