La tentative de consignation des informations de l'état à la console renvoie l'erreur «non défini n'est pas un objet (évaluation de« this.state.userName »)»

Je suis très nouveau sur JS et je ne sais vraiment pas comment cela fonctionne ou comment il est censé fonctionner

J'ai essayé de remplacer «this.state.userName» par

 - (userName) => this.getState(userName)
 - this.state[userName]
 - 'this.state[1]

Aucun de ceux-ci n'a eu l'effet souhaité

Voici mon code:

  constructor(props){
    super(props);
    this.state = {
      userName:'User Name',
      userEmail:'',
      loggedIn: false,
    };
  }

  login() {
    console.log(this.state.userName);
  };

Je veux simplement que la console enregistre tout ce qui est attribué à userName, à savoir 'User Name'

La connexion est appelée via: onPress={this.login}

0
Xekso 19 juin 2019 à 07:21

3 réponses

Meilleure réponse

Solution trouvée (26/06/19):

onPress={this.login.bind(this)} or onPress={() => this.login()}

Trouvé par: Chris G

0
Xekso 26 juin 2019 à 13:21

Vous pouvez utiliser setState pour changer l'état dans le composant. Remarque: setState est une fonction asynchrone

-1
Hiu D 19 juin 2019 à 04:31

C'est un moyen rapide d'explorer un objet et vous verrez probablement ce qui cause le problème:

console.dir( this.state );

Il videra une vue extensible de l'objet dans la console, afin que vous puissiez voir ce qu'il contient et quelles sont ses propriétés.

-1
Aubergine18 19 juin 2019 à 04:25