2017-12-17 51 views
0

私は現在、私のチームで作業している反応ネイティブアプリケーションでユーザーのデータを保持することに問題があります。私たちはイベントのリストを持つアプリケーションを持っています。イベントをクリックすると、イベントの詳細ページが開き、ユーザーがyes/no/maybe(出席メニュー)を選択するメニューが表示されます。出席しています。コードは次のようになります。AsyncStorage - error(React Native)

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> 
    ); 
    } 
} 

私たちはXcodeでビルドを実行しています。ページが更新された後、またはアプリケーションが終了した後でもユーザーの選択肢が残っていることを望みます。これは、ユーザーが選択したものであり、すべてのイベントで同じままです。例えば。イベント1で「多分」を選択した場合、アプリ内の他のイベントごとに「多分」の選択が強調表示されます。

ユニークなイベントIDを取得し、これをAsyncStorage関数に実装するというアイディアがありましたが、これを行う方法はわかりません。

ご協力いただければ幸いです。ありがとうございます!私が助けた

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

希望:あなたは/このような非同期ストレージ で保存するために待って非同期を使用する必要がある。この場合

+0

AsyncStorageあなたは多少のような AsyncStorage.setItem( 'をEVENT_ID'、)のハックを置くことができるキーの値であるので、 –

+0

あなたはすでにそれを理解したような音!特定のキーでsetItemを設定するだけで、onDidMountは特定の選択肢のみを状態に割り当て、他のすべての選択肢は空のままにします。 –

+0

人の頭に感謝します - これらを調べます – Saf

答えて

関連する問題