2017-10-23 2 views
0

Ich verwende Laravel und React Native, um ein Projekt zu erstellen. Ich habe eine Post-Anfrage und die validiert Daten auf der Serverseite und gibt Fehler zurück. Ich möchte die Fehlerreaktion im Fehler-Array zuweisen, das im Zustand deklariert wurde. Mein Code sind unten angegeben:Zuweisen der JSON-Antwort auf den Status "React Native"

Laravel:

public function registerUser(Request $request) 
{ 
    $rules = [ 
     'username' => 'required', 
     'email' => 'required|email', 
     'password' => 'required|min:5' 
    ]; 

    $validator = \Validator::make($request->all(), $rules); 

    if ($validator->fails()) {  
     return response()->json(['errors' => $validator->messages()]); 
    } 

    $user = User::create(request(['username', 'email', 'password'])); 

    return response()->json('success'); 
} 

india Reagieren:

constructor(props){ 
     super(props); 
     this.state={ 
      userName:'', 
      userEmail:'', 
      userPassword:'', 
      errors:[]    
     } 
    } 

    axios({ 
     method: 'post', 
     url: API_URL+'signup', 
     data: { 
      username: userName, 
      email: userEmail, 
      password: userPassword 
     } 
    }) 
    .then(function (response) { 
     var count = Object.keys(response.data.errors).length; 
     if (count > 0) { 
      console.log(response.data.errors); 
      var newState = new Array(); 
      newState.push(response.data.errors); 
      this.setState({ 
       errors: newState 
      }) 
     } 
    }) 
    .catch(function (error) { 
     console.log(error); 
    }); 

Es zeigt mir die folgenden Fehler auf Konsole Fehler:

undefiniert ist keine Funktion (Auswerten von 'this.setState ({errors: newState})') * app \ components \ Registrierung \ RegistrationForm.js: 51: 18 in - knotenmodule \ promise \ setimmediate \ core.js: 37: 14 in tryCallOne - knotenmodule \ promise \ setimmediate \ core.js: 123: 25 in - ... 10 weitere Stapelrahmen von Rahmen

Antwort

0

Interna müssen Sie auf die korrekte Schreibweise Ihrer Funktionen binden die richtige this Kontext oder verwenden ES6 Pfeil Funktionen zu erhalten, die bereits auf den richtigen this Kontext

überprüfen Sie den Code unten

axios({ 
     method: 'post', 
     url: API_URL+'signup', 
     data: { 
      username: userName, 
      email: userEmail, 
      password: userPassword 
     } 
    }) 
    .then((response) => { 
     var count = Object.keys(response.data.errors).length; 
     if (count > 0) { 
      console.log(response.data.errors); 
      var newState = new Array(); 
      newState.push(response.data.errors); 
      this.setState({ 
       errors: newState 
      }) 
     } 
    }) 
    .catch((error) => { 
     console.log(error); 
    }); 
gebunden ist
Verwandte Themen