2017-05-24 3 views
2

Wirklich verwirrt hier. Ich aktualisiert Router 4 zu reagieren, die einige Änderungen erforderlich, und jetzt, wenn meine Anmeldeformular Fehler auf der Serverseite es die Konsole Fehler zurückgibt:This.setstate wird innerhalb eines Callbacks deaktiviert

setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the RegisterForm component.

was wirklich verwirrend ist, wenn ich this.setState({ errors: {createUserError: "Test error" }}); außerhalb Accounts.createUser Funktion laufen I don‘ t bekomme den Fehler consolde.

Irgendwelche Vorschläge ????

handleSubmit(event) { 
    event.preventDefault(); 

    this.setState({errors: {} }, function() { 
     var data = { 
     email: this.state.email, 
     password: this.state.password 
     }; 

     Accounts.createUser(data, (error) => { // This arrow function preserves this 
     if(error) { 
      this.setState({ errors: {createUserError: error.reason }}); 
     } 
     }); 
    }); 
    } 
+0

Sie müssen mehr Kontext bereitstellen oder herausfinden, warum Ihre Komponente deaktiviert ist. Wie @GProst in seinem Kommentar sagt, gehört dieser Zustand höchstwahrscheinlich außerhalb der Komponente, und es scheint, dass Sie warten sollten, bis das Login-Ergebnis klar ist, bevor Sie von der Login-Ansicht weg navigieren. – MasterAM

+0

Ich konnte das Problem aufspüren. Es wurde mit der Komponente "Öffentliche/authentifizierte Routen" verknüpft, die dazu führte, dass die Komponente unmounten wurde. – bp123

Antwort

1

Ich nehme an, dies könnte geschehen, wenn Ihre Komponente abgehängt wurde, bevor Ihr zweiter setState aufgerufen wird. Vielleicht löst Accounts.createUser() Router Navigation oder etwas anderes, das Ihre Komponente aushängen.

+0

Wie würde ich es wieder montieren? – bp123

+0

Es bedeutet, dass Sie die Komponente selbst entfernt haben. Im Allgemeinen ist es die beste Lösung, den Status aus der Komponente zu entfernen. Daher müssen Sie nicht überprüfen, ob es montiert ist oder nicht. – Sulthan

+0

Unmontierte Komponente ist eine Komponente, die nicht auf der HTML-Seite angezeigt wird. Wenn das Unmounten dieser Komponente sinnvoll ist, sollten Sie nach dem Abhängen nicht versuchen, irgendetwas damit zu tun? Wenn das Unmounten nicht sinnvoll ist, sollten Sie es verhindern. – GProst

Verwandte Themen