J'ai enregistré un user_id et un jeton dans le stockage asynchrone et je peux le récupérer via la console avec la fonction de récupération. Je sais donc que la fonction de configuration fonctionne parfaitement, les fonctions dans deviceStorage sont toutes asynchrones.
Le problème survient lorsque j'essaie d'utiliser le user_id et le jeton récupérés dans mon composant, cela renvoie undefined.
Comment puis-je récupérer un élément du stockage et l'utiliser ultérieurement dans mon code, je veux utiliser le jeton et l'identifiant utilisateur pour une requête fetch. Veuillez m'aider et indiquer la meilleure façon de procéder.
import deviceStorage from "../components/services/deviceStorage";
class Jobs extends Component {
constructor() {
super();
this.state = {
jobsData: [],
isLoading: true
};
}
componentDidMount() {
deviceStorage.retrieveToken().then(token => {
this.setState({
token: token
});
});
deviceStorage.retrieveUserId().then(user_id => {
this.setState({
user_id: user_id
});
});
const opts = {
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: "Token " + this.state.token
}
};
fetch("http://example.com/job/" + this.user_id, opts)
.then(res => res.json())
.then(jobs => {
this.setState({
jobsData: jobs,
isLoading: false
});
console.log(jobsData);
})
.catch(error => {
console.error(error);
});
}
render {}
Code pour la récupération et la mise en place
import {AsyncStorage} from 'react-native';
const deviceStorage = {
async storeItem(key, item) {
try {
//nous voulons attendre que la promesse retournée par AsyncStorage.setItem()
//soit résolue pour obtenir la valeur réelle avant de retourner la valeur
var jsonOfItem = await AsyncStorage.setItem(key, JSON.stringify(item));
return jsonOfItem;
} catch (error) {
console.log(error.message);
}
},
async retrieveItem(key) {
try {
const retrievedItem = await AsyncStorage.getItem(key);
const item = JSON.parse(retrievedItem);
// console.log(item);
return item;
} catch (error) {
console.log(error.message);
}
return
}
};
export default deviceStorage;