为什么 AsyncStorage getAllKeys 不返回 null?有多个视图,想要根据是否找到数据进行渲染,删除所有键

Why is AsyncStorage getAllKeys not returning null? Have multiple views, want to render based on if data found, deleted all keys

我在状态中存储了一个名为 isDataReady 的布尔值。如果我通过 AsyncStorage 找到密钥,我将其设置为 true 并显示数据列表。如果什么都找不到,那么我想渲染一个不同的视图。我的数据显示正常,但删除了所有内容后,我无法显示介绍屏幕。这是因为 AsyncStorage 永远不会为空,尽管它们没有键。我做错了什么?

代码(为清楚起见删除了相关代码)

 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>
    );
   }
 }
}

我将 if 语句更改为 if (keys.length !== 0),总是 returns 数组,因此它永远不会为空。