首页 > 解决方案 > 使用异步存储将对象存储在 react-native 的数组中

问题描述

我已经使用 Guid id 生成了随机 Qr 代码,并且我将最后生成的 Qr 代码保存到 async-storage 但是我如何将每个生成的随机 Guid id 存储到 async-storage 中。这是生成随机ID的代码。

  let base64Logo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAA..";

  function uuidv4() {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
      var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
      return v.toString(16);
    });
  }
  
AsyncStorage.setItem("id", uuidv4());
console.log(uuidv4());

谢谢!

标签: react-nativearraylistasyncstorage

解决方案


在保存时使用 JSON.stringify 将数组转换为字符串,在读取时使用 JSON.parse 将数组转换回数组

let base64Logo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAA..";


    function uuidv4() {
      return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
        return v.toString(16);
      });
    }

    // save item in array
    try {
      const myArrayString = await AsyncStorage.getItem('ids'); 
      const myArray = myArrayString !== null?JSON.parse(myArray):[];
      myArray.push(uuidv4())
      await AsyncStorage.setItem('ids', JSON.stringify(myArray));
    } catch (error) {
      // Error saving data
    }

    // when you want to retrieve array 
    try {
      const myArray = await AsyncStorage.getItem('ids');
      if (myArray !== null) {
        // We have data!!
        console.log(JSON.parse(myArray));
      }
    } catch (error) {
      // Error retrieving data
    }

推荐阅读