J'ai une demande d'API utilisant Axios provenant de mon serveur de backend. Je souhaite enregistrer le jeton au porteur au stockage de périphérique ou au stockage local. Mais quand je fais Voici ma méthode p> console.log code> pour le jeton au porteur, il semble ne pas fonctionner car ce que je reçois est quelque chose comme une promesse. Loading...
Promise {
"_40": 0,
"_55": null,
"_65": 0,
"_72": null,
}
Loading Finished
3 Réponses :
Vous pouvez utiliser async / attendre code> avec essayer / attraper code> ce qui le rend plus lisible. En outre, vous aurez besoin de attendre code> la demande de asyncstorage code> car il renvoie une promesse. import { AsyncStorage, Alert } from "react-native";
export default async function login(email, password, setLoading) {
console.log("Loading...");
setLoading(true);
const url = "http://52.74.70.6/api/auth/login";
const data = {
email: email,
password: password,
};
const headers = {
Accept: "application/json",
"Content-Type": "application/json",
};
try {
const response = await axios.post(url, data, { headers: headers });
setLoading(false);
await AsyncStorage.setItem("bearer_token", res.data.bearer_token);
console.log(await AsyncStorage.getItem("bearer_token"));
console.log("Loading Finished");
} catch (err) {
setLoading(false);
console.log(err);
AlertErr();
}
}
Merci pour ça. C'est celui que j'ai actuellement suivi. Comment utiliser le jeton au porteur dans toute ma demande lorsque j'ai fini de vous connecter?
Eh bien, vous pouvez ajouter autorisation code> dans vos en-têtes code> comme ceci {en-têtes: {"Autorisation": `Bearer $ {jeton}}}} code>, Token = Await Asyncstorage.getem ("Bearer_Token") Code>. Merci pour le vote @vince.
Puisque c'est "ASYNC" Avez-vous essayé d'ajouter attendre code> avant de
then((res)=>{
setLoading(false)
await AsyncStorage.setItem('bearer_token', res.data.bearer_token);
return AsyncStorage.getItem('bearer_token')
})
.then(token => console.log('token', token)
Comme son nom l'indique, ASYNCStorage est asynchrone. Les deux établissent un élément et la lecture d'un article d'ASYNCStorage sont asynchrones, vous ne pouvez donc pas lire immédiatement les résultats de votre insuion. Accouplement au Docs , afin de vous connecter, vous pouvez
AsyncStorage.setItem('bearer_token', res.data.bearer_token).then(() => {
AsyncStorage.getItem('bearer_token').then(console.log)
});