react localstorage lib expire example ios local-storage storage react-native

ios - localstorage - Reaccionar nativo AsyncStorage almacenando valores distintos de cadenas



save local storage react native (3)

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

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

Para obtener valor de la clave "nombre"

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

La salida será la siguiente:

''Get Values >> '', ''Hello''

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

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

No hay problema, pero:

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

No funciona..


Según los documentos nativos de AsyncStorage React , me temo que solo puedes almacenar cadenas.

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

Establece el valor de la clave y llama a la devolución de llamada al finalizar, junto con un error si hay alguno. Devuelve un objeto Promise.

Es posible que desee probar y echar un vistazo a los paquetes de terceros. Tal vez este .

Editar 02/11/2016

Gracias @Stinodes por el truco.

Aunque solo puede almacenar cadenas, también puede alinear objetos y matrices con JSON para almacenarlas, luego analizarlas nuevamente después de recuperarlas.

Sin embargo, esto solo funcionará correctamente con arrays o instancias de objetos simples, sin embargo, los objetos heredados 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 alinear totalmente los objetos y las matrices con JSON, y analizarlos de nuevo cuando los saque del almacenamiento local.
Sin embargo, esto solo funcionará correctamente con Object o arreglos de Object simples.

Los objetos que se heredan de cualquier prototipo pueden causar algún comportamiento inesperado, ya que los prototipos no se analizarán a JSON.

JSON.stringify embargo, los JSON.stringify (o cualquier primitivo) pueden almacenarse utilizando JSON.stringify .
JSON reconoce estos tipos 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 obtener y analizar el valor (que no tiene que ser un booleano, puede ser un objeto. Lo que satisfaga sus necesidades), puede establecer el estado o hacer lo que sea necesario.