Javascript 在异步存储中存储持久对象

Javascript 在异步存储中存储持久对象,javascript,arrays,reactjs,react-native,asyncstorage,Javascript,Arrays,Reactjs,React Native,Asyncstorage,我不知道这是否可行,但我正在尝试将持久性数据存储在异步存储中,因此每当提取存储密钥中的阵列数据时,持久性数据总是位于阵列的顶部。此外,无法删除持久性数据。下面是一个示例代码,为了更清晰,我只展示了这些函数 componentWillMount() { this.saveData(); } componentDidMount() { this.getDataSync(); } getDataSync =

我不知道这是否可行,但我正在尝试将持久性数据存储在异步存储中,因此每当提取存储密钥中的阵列数据时,持久性数据总是位于阵列的顶部。此外,无法删除持久性数据。下面是一个示例代码,为了更清晰,我只展示了这些函数

      componentWillMount() {
        this.saveData();
      }

      componentDidMount() {
        this.getDataSync();
      }

      getDataSync = async () => {
        try {
          const list = await AsyncStorage.getItem(LIST_STORAGE_KEY);

          const parsedList = JSON.parse(list);

          this.setState({
            isDataReady: true,
            list: parsedList || []
          });

          console.log(parsedList, this.state.list);
          } catch (e) {
          Alert.alert('Failed to load list.');
        }
      }

      saveData = () => {
        const data = [
          {
            firstname: 'John',
            lastname: 'Doe',
            image: null,
            email: 'john@doe.com',
            key: 0,
            phone: '19191919191',
          },
        ];

            this.setState(
              prevState => ({
                list: [data, ...prevState.list]
              }),
              () => this.saveItems(this.state.list)
            );
      }

      handleDelete(item) {
        if (item.key === 0) {
          Alert.alert('You cannot delete this user');
        } else {
        this.setState(({ list }) => ({
          list: list.filter(o => o.key !== item.key)
          }),
          () => this.saveItems(this.state.list)
        );
          console.log('deleted: ', item);
        }
      }

      handleAdd() {
        const { firstname, lastname, email, phone } = this.state;
        const ID = uuid();
        const newItemObject = {
            key: ID,
            firstname: firstname,
            lastname: lastname,
            email: email,
            phone: phone,
            image: null,
        };

        this.setState(
          prevState => ({
            list: [...prevState.list, newItemObject]
          }),
          () => this.saveItems(this.state.list)
        );
      }

      saveItems = list => {
        AsyncStorage.setItem(LIST_STORAGE_KEY, JSON.stringify(list));
      };

向对象添加另一个属性,则不希望被删除。默认情况下是持久的

{
  firstname: 'John',
  lastname: 'Doe',
  image: null,
  email: 'john@doe.com',
  key: 0,
  phone: '19191919191',
  delete: false, // won't be deleted
},
getDataSync
中,按
delete
属性对列表进行排序

getDataSync = async () => {

    try {
      const list = await AsyncStorage.getItem(LIST_STORAGE_KEY);

      const parsedList = JSON.parse(list);

      // items with .delete property set to false, will be at the top of the list
      parsedList.sort((x, y) =>  (x.delete === y.delete ) ? 0 : x ? 1 : -1);

      this.setState({
        isDataReady: true,
        list: parsedList || []
      });

      console.log(parsedList, this.state.list);
      } catch (e) {
      Alert.alert('Failed to load list.');
    }
  }

这是对象列表还是字符串?这是对象列表。当您显示数据时,请检查
。delete
属性如果为false,请不要显示delete按钮。不工作。。同样的结果是,如上所示应用我的代码存储持久数据,并在下面添加任何其他新的数组对象,但在两次重新加载后,它会删除添加的新对象。这是我最关心的问题