2017-07-01 3 views
-1

Ich habe eine Funktion definiert, aber es ist nicht definiert in der Referenzprozess. Ich habe versucht, Haltepunkte hinzuzufügen, die Ergebnisse zeigen, dass es eine Funktion ist, aber weiterhin einen Fehler erneut ausführen, meinen Sie den Rückruf?In Reaktion definiere ich eine Funktion, aber es erscheint undefine

Das ist der Teil I zitiert, prompt requestServer ist nicht die Funktion, aber es hat sich in den folgenden Code definiert, der Grund, warum ich nicht weiß, ob der Rückruf

import React, {Component, PropTypes} from 'react'; 
import GLogin from './Login'; 
var serverMethon = require('../../server/requestServer'); 
export default class LoginContainer extends Component { 
    constructor(props) { 
     super(props); 
     this.state = { 

     } 
    } 

    getLogin = (value) => { 
     const {selectView} = this.props; 
     const requestServer = serverMethon.requestServer; 
     requestServer('login', value, function(t) { 
      const data = JSON.parse(t.text); 
      if (data.state != "successful") { 
       alert("Login fail!") 
       return; 
      } 
      selectView('SearchContainer'); 
     })(); 

    } 
    render() { 
     return (
     <GLogin 
     getLogin={this.getLogin} 
     {...this.props}/> 
    ) 
    } 
} 

Funktionsabschnitt Definitionen

var superagent = require('superagent'); 

export const requestServer = (position, info, callback) => { 
    superagent.post(`http://localhost:3000/${position}`) 
    .send(info) 
    .end((error, doc)=>{ 
     if(error){ 
     throw error 
     } 
     callback(doc) 
    }) 
} 
+0

Befreien Sie sich von den letzten beiden Klammern bei '})()' ... – Li357

Antwort

0
// proper way 
class App extends React.Component{ 
     constructor (props){ 
      super(props); 
      this.sampleMethod = this.sampleMethod.bind(this); 
     } 

     sampleMethod(){ 
      console.log('Sample method called'); 
     } 

     render(){ 
      return <button onClick={this.sampleMethod}>Click Me</buttom> 
     } 
} 

Ihre Fehler hast du deine Methode als this.getLogin genannt. Aber Sie binden die Methode nicht. Sie können diese Methode also nicht mit this.getLogin verwenden. Sie können die getLogin-Methode ohne Bindung verwenden. Dieses Mal haben Sie die Methode getLogin aufgerufen, aber Sie erhalten einen Kontext innerhalb der getLogin Methode. Der Kontext ist nicht Ihre Komponente. Zu dem Zeitpunkt, zu dem Ihr Kontext ein Fenster ist, erhalten Sie ein Fensterobjekt.

Also zuerst binden Sie Ihre Methode dann verwenden Sie es.

// your mistake 

getLogin = (value)=>{ 
    // your logic 
} 

// proper way 

getLogin(value){ 
    // your logic 
} 
Verwandte Themen