【问题标题】:How can I store unique data with asyncstorage in React Native?如何在 React Native 中使用异步存储存储唯一数据?
【发布时间】:2021-12-13 23:19:12
【问题描述】:

在 React Native 中,我希望每次在文本框中键入时都使用唯一 id 存储对象数组数据。我正在使用异步存储,但不知道如何处理。

【问题讨论】:

    标签: javascript android ios react-native


    【解决方案1】:

    你可以实现这样的东西

    第一次运行

    npm i @react-native-async-storage/async-storage
    

    然后创建一个 AsyncStore.js 或类似文件:

    import AsyncStorage from '@react-native-async-storage/async-storage';
    
    export const storeObject = async (object) => {
      const id = await createId()
      const identified = {...object, id }
      const jsonValue = JSON.stringify(identified);
      await AsyncStorage.setItem('@object-' + id, jsonValue);
    };
    
    export const getObject = async (id) => {
      const storedObject = await AsyncStorage.getItem('@object-' + id);
      if (storedObject){
        return JSON.parse(storedObject );
      }
    };
    
    export const storeIds = async (ids) => {
      const jsonValue = JSON.stringify(ids);
      await AsyncStorage.setItem('@object-ids', jsonValue);
    };
    export const getIds = async (id, ids) => {
      const storedIds = await AsyncStorage.getItem('@object-ids');
      if (storedIds) {
        return JSON.parse(storedIds );
      }
    };
    
    const createId = async() => {
      const ids = await getIds();
      const id = Math.max(ids) + 1
      await storeIds([...ids,id])
      return id;
    }
    

    编辑:我添加了一些未经测试的唯一标识符代码

    【讨论】:

    • 从哪里生成唯一ID?每次我从文本输入框中获取输入时,我只是传递一个状态变量,然后增加变量的值。这暂时有效,但是当我关闭应用程序并再次获取文本时,变量会再次从头开始,用该 ID 覆盖先前的值。
    • 我认为这是您处理逻辑的缺陷,而不是存储。听起来你应该自己生成 id ,例如1. 从存储中获取所有内容 2. 创建新项目,并添加一个 id = max(storedObjects.id)+1 的新项目 3. 存储新项目
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 2021-03-18
    相关资源
    最近更新 更多