Как проверить, существует ли ключ в AsyncStorage в React Native? getItem () всегда возвращает объект promise
Я пытаюсь проверить, доступен ли ключ в AsyncStorage
С AsyncStorage.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 или нет?
3 ответов
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
}
}
Как говорится в названии, это асинхронно. Поэтому вы должны:
AsyncStorage.getItem('user')
.then((item) => {
if (item) {
// do the damage
}
});
при необходимости можно играть либо с локальным состоянием, либо с библиотекой управления состоянием приложения.
AsyncStorage является асинхронным... Итак, вам нужно назвать это так:
checkUserSignedIn(callback){
AsyncStorage.getItem('user', (err, result) => {
if (!err && result != null){
// do something
}
else {
// do something else
}
callback(result);
});
}