Bonjour !

Je fais appel à l'aide, je me trouve dans une impasse. Je suis en train de développer une application et j'en suis à l'étape d'un "serveur authentification" qui fonctionne via l'API REST de l'outil APEX où est ma BDD.

Je procède donc à quelque vérifications de champs et surtout, à l'envoi d'une requête (GET) vers mon API pour la comparaison du mot de passe chiffré et de celui inscrit dans la BDD pour un utilisateur. J'ai donc réussi à tout faire, je récupère bien l'info sous forme de booléen (Vrai si la connexion est autorisée.), je tente à présent de la stockée dans un state, or, je procède de cette façon pour obtenir mon résultat :

var test = verifyPassword(this.state.username, this.state.password).then(function(){
  ls.get('koustConnecting').then((data) => {this.setState(() => ({ connectStatus: data }))});
});

verifyPassword() étant ma fonction qui utilise un FETCH pour la requête GET. Dans la variable data, je récupère bien mon booléen, mais étant donné qu'il s'agit d'asynchronisation, je n'ai pas la possibilité d'utiliser "this" pour pouvoir stocker ma valeur comme je le voudrais. J'ai essayé également de déclarer une variable avant "test" à laquelle j'affecte this mais il me semble que c'était fonctionnel avant ES6 mais que ce n'est plus le cas.

Auriez vous une solution? Merci.

2 réponses


Defy
Réponse acceptée

Essaie ca, je pense que ca vient du premier then, tu utilise function(){}hors si tu veux binder le this local a la function il faut soit passer par une arrow function () =>{} soit utiliser .bind()pour binder la valeur du this a ta fonction

var test = verifyPassword(this.state.username, this.state.password).then(()=>{
  ls.get('koustConnecting').then((data) => {this.setState(() => ({ connectStatus: data }))});
});

C'était ça ! Sujet résolu, merci beaucoup ! =)