为什么使用 AsyncStorage.setItem 不起作用?
Why use AsyncStorage.setItem is no wroking?
我创建了一个文件 GetSetStorage
包含 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.log 我发现 setItem
不工作。为什么 ?
如有任何帮助,我们将不胜感激。提前致谢。
//看看吧!
state = {
UserEmail: 'abcd@gmail.com'
}
async setValue() {
await AsyncStorage.setItem('email', JSON.stringify(this.state.UserEmail));
}
async getValue() {
try {
const value = await AsyncStorage.getItem('email');
if (value !== null) {
// We have data!!
console.log(value);
}
} catch (error) {
// Error retrieving data
}
}
Asyncstorage 也是 return 的一个承诺,所以你可以做类似的事情
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
请注意,如果异步存储中没有任何内容,它会 return 'null' 因此为了处理错误,您需要将它们放在 if 语句中而不是 catch
我创建了一个文件 GetSetStorage
包含 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.log 我发现 setItem
不工作。为什么 ?
如有任何帮助,我们将不胜感激。提前致谢。
//看看吧!
state = {
UserEmail: 'abcd@gmail.com'
}
async setValue() {
await AsyncStorage.setItem('email', JSON.stringify(this.state.UserEmail));
}
async getValue() {
try {
const value = await AsyncStorage.getItem('email');
if (value !== null) {
// We have data!!
console.log(value);
}
} catch (error) {
// Error retrieving data
}
}
Asyncstorage 也是 return 的一个承诺,所以你可以做类似的事情
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
请注意,如果异步存储中没有任何内容,它会 return 'null' 因此为了处理错误,您需要将它们放在 if 语句中而不是 catch