我有几个场景需要在AsyncStorage
中存储项目并将新数据推送到各自的键。其中一个是存储在AsyncStorage
中的10个国家/地区列表,如下所示:
AsyncStorage.setItem('countries', JSON.stringify(countries));
我尝试了以下操作,其中country
是我要推送/添加到预先存在的countries
的新项目:
AsyncStorage.push('countries', JSON.stringify(country));
当然没有成功......
如上所述,我还有一些需要此功能的方案。我正在尝试找到一个具有可重用的本机AsyncStorage
函数的解决方案来处理传递的key
和data
,并负责设置项目,或者推送到项目,如果它存在。
知道如何使用AsyncStorage
高效地完成此功能吗?
答案 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));