2017-07-21 1 views
1

J'utilise reac-native et le serveur d'analyse. Je mise en œuvre de l'enregistrement des utilisateurs, mais cette erreur apparaît:La méthode ne peut pas lire l'état

est pas objet non défini (évaluation « this.state.username »)

Ne doit pas être lu l'état dans la classe?

import React, {Component} from 'react'; 
import {Container, Content, Form, Item, Input, Button, Text} from 'native-base'; 
var Parse = require('parse/react-native'); 

export default class Singup extends Component { 
    constructor(props) { 
    super(props); 
    this.state = { 
     username: '', 
     password: '' 
    }; 
    } 

    Buttonpress() { 
    Parse.initialize("APPLICATION_ID"); 
    Parse.serverURL = 'http://***.***.**.**:1337/parse' 

    var user = new Parse.User(); 
    user.set("username", this.state.username); 
    user.set("password", this.state.password); 

    user.signUp(null, { 
     success: function(user) { 
     console.warn("YES"); 
     }, 
     error: function(user, error) { 
     // Show the error message somewhere and let the user try again. 
     alert("Error: " + error.code + " " + error.message); 
     } 
    }); 
    } 

    render() { 
    return (
     <Container> 
     <Content> 
      <Form> 
      <Item> 
       <Input 
       placeholder="Username" 
       onChangeText={(text) => this.setState({username: text})} 
       value = {this.state.username}/> 
      </Item> 
      <Item last> 
       <Input 
       placeholder="Password" 
       onChangeText={(text) => this.setState({password: text})} 
       value = {this.state.password}/> 
      </Item> 
      </Form> 
      <Button 
      block 
      onPress={this.Buttonpress}> 
      <Text>Inscrever-se</Text> 
      </Button> 
     </Content> 
     </Container> 
    ); 
    } 
} 

Traduit automatiquement.

+0

double possible de [React setState réutilisable] (https://stackoverflow.com/questions/41887440/react- setstate-reusable) –

+0

Problème de liaison avec la fonction ButtonPress, voir la copie –

+0

Cette question a été abandonnée par le créateur. Il n'y avait pas de bonne réponse. –

Répondre

2

La liaison de votre fonction devrait vous aider

constructor(props) { 
    super(props); 
    this.state = { 
     username: '', 
     password: '' 
    }; 
    this.Buttonpress = this.Buttonpress.bind(this); 
    } 

Voici la référence: https://facebook.github.io/react/docs/react-without-es6.html#autobinding

+0

cette question a plusieurs doublons sur StackOverflow, s'il vous plaît envisager de le marquer comme un doublon ou de fournir un lien approprié plutôt que de répondre, –

+0

Merci! Pouvez-vous me donner une référence de pourquoi j'ai besoin de cela? Je voudrais comprendre. –

+0

[Celui-ci] (https://medium.freecodecamp.org/react-binding-patterns-5-approaches-for-handling-this-92c651b5af56) concerne les variantes de liaison. [Documents Mozilla] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) – Andrew