React Native AsyncStorage存储除字符串以外的值

有没有办法用AsyncStorage存储字符串以外的值? 我想存储简单的布尔值,例如。

AsyncStorage.setItem('key', 'ok'); 

没问题,但是:

 AsyncStorage.setItem('key', false); 

不起作用..

基于AsyncStorage React-native文档 ,我担心你只能存储字符串..

 static setItem(key: string, value: string, callback?: ?(error: ?Error) > => void) 

设置key的值并在完成时调用callback,如果有则设置Error。 返回Promise对象。

您可能想尝试查看第三方软件包。 也许这一个 。

编辑02/11/2016

感谢@Stinodes的诀窍。

虽然您只能存储字符串,但您也可以使用JSON对对象和数组进行字符串化以存储它们,然后在检索它们后再次解析它们。

这只适用于普通的Object-instances或数组,但是,从任何原型inheritance的Objects可能会导致意外问题。

一个例子 :

 // Saves to storage as a JSON-string AsyncStorage.setItem('key', JSON.stringify(false)) // Retrieves from storage as boolean AsyncStorage.getItem('key', (value) => { JSON.parse(value) // boolean false }) 

您只能存储字符串,但您可以使用JSON完全对对象和数组进行字符串化,并在将它们从本地存储中拉出时再次解析它们。
但这只适用于普通的Object -instances或数组。

从任何原型inheritance的对象可能会导致一些意外行为,因为原型不会被解析为JSON。

JSON.stringify ,可以使用JSON.stringify存储布尔值(或任何原语)。
JSON识别这些类型,并且可以双向解析它们。

 JSON.stringify(false) // "false" JSON.parse("false") // false 

所以:

 // Saves to storage as a JSON-string AsyncStorage.setItem('someBoolean', JSON.stringify(false)) // Retrieves from storage as boolean AsyncStorage.getItem('someBoolean', function (err, value) { JSON.parse(value) // boolean false } // Or if you prefer using Promises AsyncStorage.getItem('someBoolean') .then( function (value) { JSON.parse(value) // boolean false }) // Or if you prefer using the await syntax JSON.parse(await AsyncStorage.getItem('someBoolean')) // boolean false 

获取并解析该值(不必是布尔值,它可以是一个对象。无论哪个满足您的需求),您可以设置状态或对其执行任何操作。

我在AsyncStorage中的“name”键中设置了值

 AsyncStorage.setItem("name", "Hello"); 

从关键“名称”获取价值

 AsyncStorage.getItem("name").then((value) => { console.log("Get Value >> ", value); }).done(); 

输出如下:

 'Get Values >> ', 'Hello'