如何在 React Native 中正确地从异步存储中获取数据?
How to properly fetch data from async storage in react native?
我正在尝试通过异步存储加载和检索本地数据。我已经在页面上列出了当前设置,但无法检索数据。单击存储数据后,我会收到有关它的通知,因此肯定会保存数据。但是当我继续调用数据时,它 returns 是一个空值。我在这里做错了什么?
const STORAGE_KEY = '@save_enableauto'
state={
enableAuto:false
}
_storeData = async enableAuto => {
try {
let x = toString(enableAuto);
await AsyncStorage.setItem(STORAGE_KEY, x)
alert('Data successfully saved!')
//this.setState({ enableAuto: x })
} catch (e) {
console.log(e)
alert('Failed to save name.')
}
}
_retrieveData = async () => {
console.log('trying to call data')
try {
const enableAuto = await AsyncStorage.getItem('STORAGE_KEY');
console.log(enableAuto)
if (enableAuto !== null) {
// We have data!!
console.log(enableAuto);
}
} catch (error) {
alert('failed to load previous settings.')
// Error retrieving data
}
};
...
<Button title={'Store Data'} onPress={() => this._storeData(this.state.enableAuto)}/>
<Button title={'call Data'} onPress={() => this._retrieveData()}/>
</View>
<View>
<CheckBox
value={this.state.enableAuto}
onValueChange={() => this.setState({ checked: !this.state.enableAuto })}
/>
上面的错误是你在存储的时候设置的:
await AsyncStorage.setItem(STORAGE_KEY, x)
这里的STORAGE_KEY
指的是值@save_enableauto
但是当您检索数据时
const enableAuto = await AsyncStorage.getItem('STORAGE_KEY');
您将 'STORAGE_KEY' 作为字符串提供,这意味着它引用 'STORAGE_KEY' 并且它没有任何存储值。试试这个
const enableAuto = await AsyncStorage.getItem(STORAGE_KEY);
希望对您有所帮助。有疑问请随意
我正在尝试通过异步存储加载和检索本地数据。我已经在页面上列出了当前设置,但无法检索数据。单击存储数据后,我会收到有关它的通知,因此肯定会保存数据。但是当我继续调用数据时,它 returns 是一个空值。我在这里做错了什么?
const STORAGE_KEY = '@save_enableauto'
state={
enableAuto:false
}
_storeData = async enableAuto => {
try {
let x = toString(enableAuto);
await AsyncStorage.setItem(STORAGE_KEY, x)
alert('Data successfully saved!')
//this.setState({ enableAuto: x })
} catch (e) {
console.log(e)
alert('Failed to save name.')
}
}
_retrieveData = async () => {
console.log('trying to call data')
try {
const enableAuto = await AsyncStorage.getItem('STORAGE_KEY');
console.log(enableAuto)
if (enableAuto !== null) {
// We have data!!
console.log(enableAuto);
}
} catch (error) {
alert('failed to load previous settings.')
// Error retrieving data
}
};
...
<Button title={'Store Data'} onPress={() => this._storeData(this.state.enableAuto)}/>
<Button title={'call Data'} onPress={() => this._retrieveData()}/>
</View>
<View>
<CheckBox
value={this.state.enableAuto}
onValueChange={() => this.setState({ checked: !this.state.enableAuto })}
/>
上面的错误是你在存储的时候设置的:
await AsyncStorage.setItem(STORAGE_KEY, x)
这里的STORAGE_KEY
指的是值@save_enableauto
但是当您检索数据时
const enableAuto = await AsyncStorage.getItem('STORAGE_KEY');
您将 'STORAGE_KEY' 作为字符串提供,这意味着它引用 'STORAGE_KEY' 并且它没有任何存储值。试试这个
const enableAuto = await AsyncStorage.getItem(STORAGE_KEY);
希望对您有所帮助。有疑问请随意