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'