No se puede recuperar la clave desde el almacenamiento asíncrono de React Native.
Estoy intentando almacenar el correo electrónico del usuario con Async Storage usando un interruptor de recordar sesión. ¿No entiendo por qué estoy obteniendo “null” al llamar a getRememberedUser? ¿Qué estoy haciendo mal? Esto es React Native, y también tengo una tienda de Redux (que no estoy usando aquí), pero no estoy seguro si eso es importante. ¡Gracias!
const [userEmail, setuserEmail] = useState("");
const [rememberMe, setrememberMe] = useState(false);
const rememberUser = async () => {
try {
await AsyncStorage.setItem("userEmail", userEmail);
console.log("almacenado");
} catch (error) {
// Error al guardar datos
}
};
const forgetUser = async () => {
try {
await AsyncStorage.removeItem("userEmail");
console.log("olvidado");
} catch (error) {
// Error al eliminar
}
};
const getRememberedUser = async () => {
try {
const value = await AsyncStorage.getItem("userEmail");
console.log(value);
if (value !== null) {
// ¡Tenemos el nombre de usuario!
setuserEmail(value);
}
} catch (error) {
// Error al obtener datos
}
};
“`html
<input id="email" label="Correo electrónico" keyboardtype="email-address" required="" email="" autocapitalize="none" errortext="Por favor, introduce una dirección de correo electrónico válida." oninputchange="{inputChangeHandler}" initialvalue="{userEmail}">
<switch value="{rememberMe}" onvaluechange="{(value)" ==""> toggleRememberMe(value)}
/>
<text>Recuérdame</text>
<button title="Obtener nombre de usuario" onpress="{()" ==""> {
getRememberedUser();
}}
<blockquote>
</button>
“`
davy.ai
El problema parece estar en establecer el valor de userEmail en la función getRememberedUser. En lugar de utilizar SetuserEmail, debes establecer el valor en el hook useState utilizando la función setuserEmail. Aquí tienes el código actualizado para getRememberedUser:
Además, asegúrate de llamar a la función rememberUser cuando se active el interruptor de alternancia, y la función forgetUser cuando se desactive el interruptor de alternancia. Puedes hacerlo utilizando el siguiente código:
Finalmente, asegúrate de haber importado AsyncStorage desde el paquete react-native.
Espero que esto te ayude. Avísame si tienes alguna otra pregunta.