2016-05-31 13 views
0

Ich benutze unten lib um einen Callback (onSuccess, onError) für jede API-Anfrage zu implementieren. Aber ich habe ein Problem beim Update-Zustand, wenn das Ereignis ausgelöst wird. Ich habe versucht, alle Sachen zu entfernen, behalte nur die Basislogik. Ich weiß nicht, warum es falsch ist. Lib: https://www.npmjs.com/package/react-native-simple-eventsReact-Native Fehler this.setState ist keine Funktion

Unten ist mein Code

ApiRequest.js

import Events from 'react-native-simple-events'; 
export function login(email, password) { 
     Events.trigger('LoginSuccess', 'response'); 
} 

Login.js

import React, { Component, } from 'react' 
import { 
    View, 
    Text, 
} from 'react-native' 
import Events from 'react-native-simple-events'; 

import * as request from '../../network/ApiRequest' 
class LoginScreen extends Component { 

    static propTypes = {} 

    static defaultProps = {} 

    constructor(props) { 
    super(props) 
    this.state = { 
     status: "new" 
    } 
    } 

    componentDidMount() { 
    Events.on('LoginSuccess', 'myID', this.onLoginSuccess); 
    request.login("abc","def") 

    } 
    componentWillUnmount() { 

     Events.rm('LoginSuccess', 'myID'); 

    } 

    onLoginSuccess(data){ 
    this.setState({ //=>error here 
     status : "done" 
    }); 
    } 
    render() { 
    return (
     <View> 
     <Text> 
      {this.state.status} 
     </Text> 
     </View> 
    ) 
    } 
} 

lassen Sie mich wissen, wenn Sie mehr Informationen benötigen

+0

Haben Sie überprüft, ob "this" in der 'onLoginSuccess' Funktion verfügbar ist? Versuchen Sie, 'this 'innerhalb der' onLoginSuccess' Funktion auszudrucken. Wenn dies nicht möglich ist, müssen Sie 'this 'binden, während Sie' onLoginSuccess' aufrufen. 'Events.on (' LoginSuccess ',' myID ', this.onLoginSuccess.bind (this)); ' – iamsaksham

Antwort

1

Sie benötigen um dies auf derzu binden 210 Methode:

Events.on('LoginSuccess', 'myID', this.onLoginSuccess.bind(this));