如何在 React Native 中使用异步存储存储唯一数据?
Posted
技术标签:
【中文标题】如何在 React Native 中使用异步存储存储唯一数据?【英文标题】:How can I store unique data with asyncstorage in React Native? 【发布时间】:2021-12-13 23:19:12 【问题描述】:在 React Native 中,我希望每次在文本框中键入时都使用唯一 id 存储对象数组数据。我正在使用异步存储,但不知道如何处理。
【问题讨论】:
【参考方案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. 存储新项目以上是关于如何在 React Native 中使用异步存储存储唯一数据?的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用 React Native 的异步存储从本地存储中获取值吗?
将原生 iOS 应用的数据迁移到 React Native 应用的异步存储