2017-12-17 17 views
0

Ich habe ein Problem mit persistenten Benutzerdaten in einer reaktionsnativen Anwendung, an der ich gerade mit meinem Team arbeite. Wir haben eine App mit einer Liste von Ereignissen und wenn Sie auf ein Ereignis klicken, öffnet es die Ereignisdetailseite und zeigt ein Menü an, um ja/nein/vielleicht (Anwesenheitsmenü) zu wählen, das der Benutzer auswählen kann, ob sie es wollen oder nicht nehmen an der Veranstaltung teil. Unser Code sieht wie folgt aus:AsyncStorage - Fehler (Native Reaktion)

import React from 'react'; 
import { AsyncStorage, Text, View, StyleSheet, Picker } from 'react-native'; 

export class PickerMenu extends React.Component { 
    state = { choice: '' } 

    componentDidMount =() => AsyncStorage.getItem('choice').then((value) => this.setState({ 'choice': value })) 

    setName = (value) => { 
    AsyncStorage.setItem('choice', value); 
    this.setState({ 'choice': value }); 
    } 
    render() { 
    return (
     <View> 
     <Picker selectedValue = {this.state.choice} onValueChange = {this.setName} itemStyle = {styles.item}> 
      <Picker.Item label = "Yes" value = "yes" /> 
      <Picker.Item label = "Maybe" value = "maybe" /> 
      <Picker.Item label = "No" value = "no" /> 
     </Picker> 
     </View> 
    ); 
    } 
} 

Wir sind die Build auf Xcode läuft. Wir möchten, dass die Wahl des Benutzers nach dem Aktualisieren der Seite oder nach dem Schließen der App immer noch vorhanden ist. Dies funktioniert jedoch so, dass die Auswahl, die der Benutzer ausgewählt hat, für jedes Ereignis gleich bleibt. Z.B. Wenn sie "Vielleicht" für Ereignis 1 auswählen, wird die Auswahl "Vielleicht" für jedes andere Ereignis in unserer App hervorgehoben.

Wir hatten eine Idee, eindeutige Ereignis-IDs zu erfassen und diese in die AsyncStorage-Funktion zu implementieren, aber wir sind nicht sicher, wie das geht.

Jede Hilfe wird großartig und sehr geschätzt - danke!

+0

Da AsyncStorage Schlüsselwert ist, dass Sie einen Hack von etwas wie AsyncStorage.setItem platzieren können ('event_id ', ); –

+0

Klingt, als ob du es schon herausgefunden hättest! Setzen Sie nur setItem mit einem bestimmten Schlüssel, onDidMount zuweisen nur die spezifische Auswahl zu Zustand, und lassen Sie alle anderen Optionen noch leer. –

+0

Vielen Dank für die Jungs, die sich mit den Heads Ups beschäftigen – Saf

Antwort

0

In diesem Fall müssen Sie die Asynchron/await speichern auf dem Asynchron-Speicher wie folgt verwenden:

setName = async (value) => { 
    await AsyncStorage.setItem('choice', value); 
    this.setState({ 'choice': value }); 
} 

Hoffnung i geholfen haben!

einige nützliche Links für Sie:

https://facebook.github.io/react-native/docs/asyncstorage.html

Verwandte Themen