React Native - 将新项目推送到现有的AsyncStorage密钥?

时间:2016-08-10 01:24:25

标签: react-native asyncstorage

我有几个场景需要在AsyncStorage中存储项目并将新数据推送到各自的键。其中一个是存储在AsyncStorage中的10个国家/地区列表,如下所示:

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

我尝试了以下操作,其中country是我要推送/添加到预先存在的countries的新项目:

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

当然没有成功......

如上所述,我还有一些需要此功能的方案。我正在尝试找到一个具有可重用的本机AsyncStorage函数的解决方案来处理传递的keydata,并负责设置项目,或者推送到项目,如果它存在。

知道如何使用AsyncStorage高效地完成此功能吗?

2 个答案:

答案 0 :(得分:6)

var countries = AsyncStorage.getItem('countries');
AsyncStorage.setItem('countries', countries += JSON.stringify(country));

如果您在连接两个字符串后尝试抓取“国家/地区”数据,则显然会出现无效的 json {one json obj}{other json obj}

你必须解析JSON,然后像这样推送它:

var countries = AsyncStorage.getItem('countries');
countries = JSON.parse(countries);
countries.push(country);

一旦我们推送了最新的国家/地区,我们就可以将更新的国家/地区对象保存到 localstorage

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

显然,在抓取和检索本地存储数据时,你会添加 try + catch 块。(我刚刚把它们留在这里)。

答案 1 :(得分:0)

以下代码段将添加一个包含现有记录的新项目

var countries = AsyncStorage.getItem('countries');
AsyncStorage.setItem('countries', countries.concat(country));