4

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

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

我尝试了以下操作,country我想要推送/添加到预先存在的新项目在哪里countries

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

那当然没有用...

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

知道如何有效地完成此功能AsyncStorage吗?

4

2 回答 2

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

如果您在连接两个字符串后尝试获取“国家”数据,您显然会得到无效的json{one json obj}{other json obj} ,如下所示:

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

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

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

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

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

于 2016-08-10T03:32:53.147 回答
1

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

var countries = AsyncStorage.getItem('countries');
AsyncStorage.setItem('countries', countries.concat(country));
于 2018-02-10T11:14:20.130 回答