2016-05-31 2 views
0

Я использую ниже lib для реализации обратного вызова (onSuccess, onError) для каждого ApiRequest. Но у меня проблема при обновлении, когда событие запускается. Я пытался удалить все вещи, просто поддерживая базовую логику. Я не знаю, почему это ошибка. Lib: https://www.npmjs.com/package/react-native-simple-eventsReact-Native error this.setState не является функцией

Ниже мой код

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> 
    ) 
    } 
} 

дайте мне знать, если вам нужна дополнительная информация

+0

Был ли у пользователя '' 'доступным внутри' onLoginSuccess'? Попробуйте напечатать 'this' внутри' onLoginSuccess'. Если это не доступно, вам нужно связать 'this', а u вызывать' onLoginSuccess' 'Events.on ('LoginSuccess', 'myID', this.onLoginSuccess.bind (this)); ' – iamsaksham

ответ

1

Вам нужно связать это на onLoginSuccess:

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