如何检查 React Native 中的 AsyncStorage 中是否存在密钥? getItem() 总是 returns 一个 promise 对象
How to check if a key exists in AsyncStorage in React Native? getItem() always returns a promise object
我正在尝试使用 AsyncStorage.getItem('key_name')
检查 AsyncStorage
中的密钥是否可用。如果密钥不可用,则它不会返回 null,它仍然 returns 遵循 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 中是否存在密钥?
AsyncStorage 是异步的...因此,您需要这样调用它:
checkUserSignedIn(callback){
AsyncStorage.getItem('user', (err, result) => {
if (!err && result != null){
// do something
}
else {
// do something else
}
callback(result);
});
}
顾名思义,它是异步的。所以你必须:
AsyncStorage.getItem('user')
.then((item) => {
if (item) {
// do the damage
}
});
如果需要,您可以使用本地状态或某些应用程序状态管理库。
需要添加async await,或者在result中添加.then
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
}
}
你得到一个错误的承诺,因为你也需要在你的函数调用中有 await
。例如,请找到我的一般 class 以及我稍后在另一个电话中如何称呼它。
import AsyncStorage from "@react-native-community/async-storage";
const storageSet = async(key, value) => {
try {
await AsyncStorage.setItem(key, value);
} catch(error) {
console.log(error);
}
}
const storageGet = async(key) => {
try {
const result = await AsyncStorage.getItem(key);
console.log(result);
return result;
} catch(error) {
console.log(error);
}
}
export { storageSet, storageGet };
当我打电话给他们时,请注意 await
关键字
let value = await storageGet("somekey")
if (value === null || value === undefined ) {
//no value set in storage
}
我正在尝试使用 AsyncStorage.getItem('key_name')
检查 AsyncStorage
中的密钥是否可用。如果密钥不可用,则它不会返回 null,它仍然 returns 遵循 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 中是否存在密钥?
AsyncStorage 是异步的...因此,您需要这样调用它:
checkUserSignedIn(callback){
AsyncStorage.getItem('user', (err, result) => {
if (!err && result != null){
// do something
}
else {
// do something else
}
callback(result);
});
}
顾名思义,它是异步的。所以你必须:
AsyncStorage.getItem('user')
.then((item) => {
if (item) {
// do the damage
}
});
如果需要,您可以使用本地状态或某些应用程序状态管理库。
需要添加async await,或者在result中添加.then
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
}
}
你得到一个错误的承诺,因为你也需要在你的函数调用中有 await
。例如,请找到我的一般 class 以及我稍后在另一个电话中如何称呼它。
import AsyncStorage from "@react-native-community/async-storage";
const storageSet = async(key, value) => {
try {
await AsyncStorage.setItem(key, value);
} catch(error) {
console.log(error);
}
}
const storageGet = async(key) => {
try {
const result = await AsyncStorage.getItem(key);
console.log(result);
return result;
} catch(error) {
console.log(error);
}
}
export { storageSet, storageGet };
当我打电话给他们时,请注意 await
关键字
let value = await storageGet("somekey")
if (value === null || value === undefined ) {
//no value set in storage
}