2017-10-06 8 views
0

私はAsyncStorageを使用して値を設定しようとしていますが、常にnullを設定しているようです。私はこれを行うためにasync/awaitを使用しましたが、私はまた、値を設定してコールバックをチェックするだけでトラブルシューティングを弱体化しようとしましたが、まだnullになっています。私がここで間違っていることは何ですか?AsyncStorage.setItemコールバック常にヌル

AsyncStorage.setItem('something', 'VALUE') 
    .then((val) => { 
    this.setState({storageValue: val ? val : 'EMPTY'}); 
    }) 

これは私の状態で私に "EMPTY"を与えます。

+0

'setItem'のコールバックは、エラーが発生した場合にのみエラーを返します。それはあなたが設定した価値を与えるものではありません。 https://facebook.github.io/react-native/docs/asyncstorage.html#setitem – Sidney

+0

ドキュメントによれば、 'setItem()'は、オプションのエラーコールバックである第3のパラメータで呼び出すことができます。あなたの 'val'はおそらく' undefined'です。 –

+0

ありがとうございます。他のコードを試してみて、このコードにもう一度お尋ねします。 –

答えて

0

私はドキュメントで見つけることができませんが、サンプルコードのコードによると、setItemは何も返されないようです(結果はサンプルコードでは無視されます)。

あなたはそれを設定してみてくださいし、それを得ることができます:

AsyncStorage.setItem('something', 'VALUE') 
.then(x => AsyncStorage.getItem('something') 
.then((val) => { 
    this.setState({storageValue: val ? val : 'EMPTY'}); 
}) 
0

あなたはSetItem関数に渡しているものは何でもあなただけを使用できない理由はありますか?同じ変数を使うことができます:

AsyncStorage.setItem('something', val) 
    .then(() => this.setState({storageValue: val ? val : 'EMPTY'})) 
+0

このシナリオは、私がこれをどのようにテストしていたかとは多少異なっています。私はそれを設定してから、後でjestを使ってそれにアクセスしようとしていました。私が言ったように、私は何が間違っていたのかを突き止めるために、私が把握できる最も基本的なシナリオにそれを変えようとしていました。 –

関連する問題