web-dev-qa-db-ja.com

React Native?)のAsyncStorageにキーが存在するかどうかを確認する方法getItem()は常にpromiseオブジェクトを返します

AsyncStorageAsyncStorage.getItem('key_name')を使用してキーが使用可能かどうかを確認しようとしています。キーが利用できない場合、nullを返さず、次のpromiseオブジェクトを返します。

Promise
_45:0
_54:null
_65:null
_81:1

データを取得するための私の機能は次のとおりです。

checkItemExists(){
    let context = this;
    try {
        let value = AsyncStorage.getItem('item_key');
        if (value != null){
            // do something 
        }
        else {
            // do something else
        }
    } catch (error) {
    // Error retrieving data
    }
}

AsyncStorageにキーが存在するかどうかを確認するにはどうすればよいですか?

11
Mostafiz Rahman
async checkUserSignedIn(){
    let context = this;
    try {
       let value = await AsyncStorage.getItem('user');
       if (value != null){
          // do something 
       }
       else {
          // do something else
      }
    } catch (error) {
      // Error retrieving data
    }
}
10
Sagar Khatri

名前が言うように、それは非同期です。だからあなたはする必要があります:

AsyncStorage.getItem('user')
.then((item) => {
     if (item) {
       // do the damage
     }
});

必要に応じて、ローカル状態またはアプリケーション状態管理ライブラリを使用できます。

6
zvona

AsyncStorageは非同期です...このように呼び出す必要があります:

checkUserSignedIn(callback){
  AsyncStorage.getItem('user', (err, result) => {
    if (!err && result != null){
        // do something 
    }
    else {
        // do something else
    }
    callback(result);
  });
}
2
UXDart