Reactivar Native AsyncStorage almacenando valores que no sean cadenas

¿Hay alguna forma de almacenar valores que no sean cadenas con AsyncStorage? Quiero almacenar valores booleans simples, por ejemplo.

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

No es problema, pero:

 AsyncStorage.setItem('key', false); 

No funciona..

Basado en los documentos AsyncStorage React-native , me temo que solo puedes almacenar cadenas …

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

Establece el valor de la key y llama a la callback al finalizar, junto con un Error si lo hay. Devuelve un object Promise.

Es posible que desee probar y echar un vistazo a los packages de terceros. Quizás esta .

Editar 11/02/2016

Gracias @Stinodes por el truco.

Aunque solo puede almacenar cadenas, también puede enlazar objects y matrices con JSON para almacenarlos, luego analizarlos nuevamente después de recuperarlos.

Esto solo funcionará correctamente con las instancias o matrices de objects sin formatting, sin embargo, los objects henetworkingados de cualquier prototipo pueden causar problemas inesperados.

Un ejemplo :

 // 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 }) 

Solo puede almacenar cadenas, pero puede jerarquizar totalmente los objects y las matrices con JSON y analizarlos nuevamente cuando los saque del almacenamiento local.
Sin embargo, esto solo funcionará correctamente con Object simple -instancias o arreglos.

Los objects henetworkingados de cualquier prototipo pueden provocar un comportamiento inesperado, ya que los prototypes no se analizarán con JSON.

Los Booleanos (o cualquier primitivo para el caso) pueden almacenarse usando JSON.stringify , sin embargo.
JSON reconoce estos types y puede analizarlos en ambos sentidos.

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

Asi que:

 // 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 

Después de get y analizar el valor (que no tiene que ser un boolean, puede ser un object. Cualquiera que satisfaga sus necesidades), puede establecerse en el estado o hacer lo que quiera con él.

He establecido el valor en la key "nombre" en AsyncStorage

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

Para get el valor de la key "nombre"

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

La salida será la siguiente:

 'Get Values >> ', 'Hello' 
    Intereting Posts