React Native - 如何向现有的AsyncStorage键中添加新项目?

5

我有一些场景需要将项目存储在AsyncStorage中,并将新数据推送到它们各自的键上。其中一个是包含10个国家的列表,像这样存储在AsyncStorage中:

AsyncStorage.setItem('countries', JSON.stringify(countries));

我尝试了以下操作,其中country是我想要添加到已有countries中的新项目:

AsyncStorage.push('countries', JSON.stringify(country));

当然,那行不通...

正如所述,我还有一些需要使用此功能的场景。我正在尝试使用可重用的React Native AsyncStorage函数来处理传递的keydata,并负责设置项目或将其推送到已存在的项目中。

有什么好的方法可以高效地使用AsyncStorage实现这个功能吗?

2个回答

12
var countries = await AsyncStorage.getItem('countries');
AsyncStorage.setItem('countries', countries += JSON.stringify(country));
如果您尝试在连接两个字符串后获取“countries”数据,您显然会得到无效的json,如下所示:{one json obj}{other json obj}。您需要解析JSON,然后按以下方式推送它:
var countries = await AsyncStorage.getItem('countries');
countries = JSON.parse(countries);
countries.push(country);

一旦我们推送了最新的国家,我们就可以将更新后的国家对象保存到本地存储中。

AsyncStorage.setItem('countries', JSON.stringify(countries));

显然,在获取和检索本地存储数据时,您会添加try + catch块(我在这里只是留下它们)。


"countries.push不是一个函数",我遇到了这个错误,请帮我解决一下! - Anvesh523
5
在getItem之前使用await可能会更好:var countries = await AsyncStorage.getItem('countries'); - Mohsen Vahabzadeh

1
以下片段将添加一个具有现有记录的新项目。
var countries = AsyncStorage.getItem('countries');
AsyncStorage.setItem('countries', countries.concat(country));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接