2017-03-24 8 views
0

に反応:AsyncStorageは変化状態を保存しない - 私はAsyncStorageについてのドキュメントのサンプルに続くネイティブ

React Native - AsyncStorage docs

を。

var STORAGE_KEY = '@AsyncStorageExample:key';

と私は、この機能を私のクラスを定義します:そう、私は私のコードを実装し

私は初期状態を持っている:

state={ 
    defineValor: 0, 
}; 

componentDidMount機能と_loadInitialState

componentDidMount() { 
this._loadInitialState().done(); 
}; 
_loadInitialState = async() => { 
try { 
    var value = await AsyncStorage.getItem(STORAGE_KEY); 
    if (value !== null){ 
    this.setState({defineValor: value}); 
    alert('Recovered selection from disk: ' + value); 
    } else { 
    alert('Initialized with no selection on disk.'); 
    } 
} catch (error) { 
    alert('AsyncStorage error: ' + error.message); 
} 
}; 

だから私だけでなく、ドキュメントで、AsyncStorageで状態を変更する関数を作っ:だから

changeState =() => { 
this.setState ({ 
    defineValor: 1 
}); 
try { 
    AsyncStorage.setItem(STORAGE_KEY, this.state.defineValor); 
    alert('Saved selection to disk: ' + this.state.defineValor); 
} catch (error) { 
    alert('AsyncStorage error: ' + error.message); 
} 
}; 

、私はアプリを開いて、すべてのプロセスの実行、アラートの「ディスク上の選択なしで初期化」と私が呼ぶとき私の機能changeState、彼は警告 "ディスクに選択を保存:1"です。しかし、私がアプリケーションを閉じて再び開くと、状態は保存されず、「ディスク上の選択なしで初期化されました」という警告が表示されます。私は間違って何をしていますか?

+0

値としてのみ文字列を受け付けます。 setStateにはそのコールバックでAsyncStorage setItemを実行するコールバック関数があります。 – Hariks

答えて

1

setStateはコールバックにAsyncStorage.setItemをコールバックします。 もAsyncStorageはおそらくAsyncStorageがdefineValor状態が更新される前に値を設定します

this.setState({ defineValor: string },() => { 
    try { 
    AsyncStorage.setItem(STORAGE_KEY, this.state.defineValor); 
    alert('Saved selection to disk: ' + this.state.defineValor); 
    } catch (error) { 
    alert('AsyncStorage error: ' + error.message); 
    } 
}); 
+0

こんにちは、助けてくれてありがとう。しかし、私は本当にそれを試して、まだ動作しません。あなたは他のアイデアを持っていますか? –

+1

AsyncStorageは**文字列**として値を受け入れます。数字を正しく設定しようとしています。文字列の値を – Hariks

+0

に設定してみてください。それは本当に問題でした。どうもありがとうございます!!! –

関連する問題