У меня есть логическое значение isDataReady, хранящееся в состоянии. Если я нахожу ключи через AsyncStorage, я устанавливаю его true и показываю список данных. Если ничего не найдено, я хочу отобразить другой вид. Мои данные отображаются нормально, но со всем deletef я не могу отобразить вводный экран. Это потому, что AsyncStorage никогда не имеет значения NULL, несмотря на отсутствие ключей. Что я делаю не так?
Код (просмотрите связанный код, удаленный для ясности)
constructor() {
super();
this.state={
meals: [],
isDataReady: false,
}
}
componentDidMount() {
this.getAllMeals();
}
getAllMeals = async () => {
try {
const data = [];
let keys = await AsyncStorage.getAllKeys();
// await AsyncStorage.multiRemove(keys);
if (keys !== null) {
for (let inKey of keys) {
let obj = await AsyncStorage.getItem(inKey);
obj = JSON.parse(obj);
obj["key"] = inKey;
data.push(obj);
}
this.setState({
meals: data,
isDataReady: true
})
} else {
this.setState({
isDataReady: false
})
}
} catch (error) {
console.log("Error saving all meals. Error: " + error)
}
}
render() {
if (this.state.isDataReady === true) {
return (
<View style={styles.container}>
</View>
);
} else if (this.state.isDataReady === false) {
return (
<ScrollView>
<View style={styles.container}>
</View>
</ScrollView>
);
}
}
}