react-native - 为什么使用 AsyncStorage.setItem 没有问题?
问题描述
我创建了一个文件GetSetStorage
include AsyncStorage
,当我尝试使用它时,我发现它不起作用。
这是我的GetSetStorage
文件:
import { AsyncStorage } from 'react-native';
class GetSetStorage {
setStorageAsync(key, value) {
console.log('start set storage');
console.log(`key =>${key}`);
console.log(`vaue =>${value}`);
return new Promise((resolve, reject) => {
console.log('Why is no working here ?');
AsyncStorage.setItem(key, value, (error) => {
console.log(error);
if (error) {
console.log('===');
console.log(`set${key}error${error}`);
console.log('===');
reject(`set${key}error${error}`);
} else {
console.log('===');
console.log(`set${key}succeed`);
console.log('===');
resolve(true);
}
});
});
}
getStorageAsync(key) {
return new Promise((resolve, reject) => {
AsyncStorage.getItem(key, (error, result) => {
console.log(error);
console.log('where is my error');
if (error) {
console.log('===');
console.log(`load ${key} error ${error}`);
console.log('===');
reject(`load ${key} erro ${error}`);
} else {
console.log('===');
console.log(`load ${key} succeed`);
console.log('===');
resolve(result);
}
});
});
}
}
export default new GetSetStorage();
我在我的组件中使用它,如下所示:
import GetSetStorage from '../storage/GetSetStorage';
componentWillMount() {
GetSetStorage.setStorageAsync('testKey', 'test value');
}
我看到我发现我的 console.logsetItem
没有工作。为什么 ?
任何帮助,将不胜感激。提前致谢。
解决方案
Asyncstorage 还返回一个承诺,因此您可以执行类似的操作
AsyncStorage.setItem('email', JSON.stringify(this.state.UserEmail))
.then(() => console.log('saved email successfully'))
.catch(err => console.error('something went wrong', err));
同样,要获取相同的密钥,您可以执行以下操作:
AsyncStorage.getItem('email')
.then(val => {
if (val !== null) console.log(val); // You can do whatever you want with the email
})
.catch(err => console.error(err)) // if there was an error fetching data
请注意,如果异步存储中没有任何内容,它将返回“null”,因此为了处理错误,您需要将它们放在 if 语句中而不是 catch
推荐阅读
- javascript - 如何为新的 Angular 项目设置 Tailwind?
- java - Flyway 没有正确清理数据库,执行了两次迁移文件
- mysql - 将 MySQL Query 转换为 Laravel 的 Eloquent
- centos6 - Freeswitch(呼叫中心):moh-sound 不播放
- reactjs - 使用 api 调用在 useEffect 中延迟状态更新
- icecast - 冰播端口 80
- javascript - 在线托管功能
- python - 具有多索引和部分总和的 Pandas Groupby 或数据透视表
- javascript - 详细堆栈错误:ENOENT:没有这样的文件或目录,打开
- annotations - 寻找 annotatorjs.org 的替代品