2017-09-08 1 views
1

Ich zeige "Fehler modal", wenn Benutzer versucht, sich mit falschen Anmeldeinformationen anzumelden. Ich überprüfe, ob meine nextProps.errorMsg nicht definiert ist oder nicht. Wenn eine Fehlermeldung angezeigt wird, wird ein Fehlermodal angezeigt.Wie man Fehler Requisiten behandelt? (Fehler Modal erscheint nur einmal)

Es funktioniert nur beim ersten Versuch. Und ich habe festgestellt, dass componentWillReceiveProps nicht aufgerufen hat, wenn ich props.errorMsg von 'Can not Find Account' auf '' oder undefined gesetzt habe.

componentWillReceiveProps(nextProps) { 
    // onAuthComplete Pass twice. so. it's 
    console.log('yo'); 

    console.log(nextProps.errorMsg); 
    if(nextProps.errorMsg) { 
     this._showModal(); <<- here 
    } 
    this.setState({isLoading:true}); 
    if (nextProps.hType==1 || nextProps.hType==2) { 
     nextProps.navigation.navigate('Feed'); 
     this.setState({ password: ''}) 
    } 
    } 

_hideModal =() => { 
    // empty error 
    this.props.emptyErrorMsg; 
    this.setState({ isModalVisible: false }); 
} 

Hier ist mein Snippet meiner Reduzierungen

const INITIAL_STATE = { token: null, errorMsg: undefined } 
export default function(state = INITIAL_STATE, action) { 
    case AUTH_LOGIN_FAIL: 
     return { token: null, errorMsg: `Can't Find Account` }; 
    case EMPTY_ERROR_MSG: 
     return { ...state, errorMsg: undefined} 
} 

und Aktionen

export const emptyErrorMsg =() => ({ 
    type: EMPTY_ERROR_MSG 
}) 
+0

Ist das ein 'Typho', den Sie nicht die Funktion' this.props.emptyErrorMsg' genannt haben? – Panther

+0

??? Ich sehe keinen Typho. Könnten Sie genauer sein? –

+0

Ich benutze react-redux und spreche bereits emptyErrorMsg versprechen. Ich bin etwas verwirrt wegen deiner Antwort. –

Antwort

2

Sie in einem Kommentar darauf hingewiesen, dass

this.props.emptyErrorMsg; 

und

this.props.emptyErrorMsg(); 

beide führen die Funktion emptyErrorMsg aus.
Dies ist nicht der Fall. Hier ist der Unterschied:

const yourFunction = this.props.emptyErrorMsg; 
yourFunction(); 
this.props.emptyErrorMsg(); 

this.props.emptyErrorMsg gibt einen Zeiger auf die Funktion selbst. Es wird nicht ausgeführt. Sie können die Funktion einer Konstanten zuweisen und die Konstante später ausführen (yourFunction()).

this.props.emptyErrorMsg() führt die Funktion aus. Dies ist wahrscheinlich, was Sie in Ihrer Funktion _hideModal() tun wollten.

Verwandte Themen