【问题标题】:Why is AsyncStorage getAllKeys not returning null? Have multiple views, want to render based on if data found, deleted all keys为什么 AsyncStorage getAllKeys 不返回 null?有多个视图,想根据是否找到数据进行渲染,删除所有键
【发布时间】:2020-07-10 18:10:19
【问题描述】:

我在状态中存储了一个名为 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>
    );
   }
 }
}

【问题讨论】:

  • 请使用 ctrl+k+d 或其他格式代码然后显示,现在一切都是混合的,无法理解的代码块,第二个 getAllKeys 可能返回数组并且可能不是 null ,单个键可能为 null 但是多键为数组,检查数组长度
  • @NijatAliyev 所有这些代码都是同一个文件。
  • @NijatAliyev 成功了,谢谢!我之前尝试过长度,但必须在其他事情上完成,例如对象。
  • 是的,我现在也测试了 AsyncStorage.getAllKeys() return empty [] not null。

标签: react-native asyncstorage


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    相关资源
    最近更新 更多