Ich habe eine Komponente, die eine API-Anforderung zum Abrufen bestimmter Informationen unter componentDidMount()
erfordert. Diese Abrufanforderung beruht auf Informationen, die in einem Zustand gespeichert sind, den ich über die Funktionen ComponentWillMount()
aufgerufen habe.In WillMount() nicht verfügbarer Status in DidMount()
Meine willMount()
läuft, dann habe ich meine render()
Methode, aber der Status wurde nicht festgelegt, und so dann trifft es didMount()
aber schlägt fehl, weil die Daten noch nicht im Status sind. Wo gehe ich falsch?
Edit: Alle Funktionen werden im Konstruktor (nicht dargestellt) gebunden
componentWillMount() {
this.enforceEmployeeAuth();
this.loadEmployeeInfo();
}
componentDidMount() {
this.fetchSurveyFields();
}
// Initial check to confirm if the user should be allowed to access any information.
enforceEmployeeAuth() {
// Get request to confirm that the current user is of type EMPLOYEE
API.get("user/employee_auth", {}, (res) => {
// Employee Auth: True if employee, else false
this.setState({
employee_auth: res.employee_auth,
});
});
}
// Load up relevant information for currentUser/employee
loadEmployeeInfo() {
API.get("client/currentEmployee", {}, function(res) {
this.setState({
employee : res.employee,
employee_company : res.employee_company,
})
}.bind(this));
}
fetchSurveyFields() {
debugger
API.get('client/survey', {
survey: this.state.employee_company.survey_name
}, function(res) {
debugger
})
}
render() {
debugger
return (
<h2 className="text-charcoal text-left">Employee Rubric</h2>
)
}
wirst du für die Ergebnisse der .get warten müssen, wieder zu kommen, bevor Sie die Daten verwenden können – Cruiser
Haben u prüfen, ob Zustand Methode richtig eingestellt mit Daten innerhalb loadEmployeeInfo(), wenn sie aufgerufen wurde von ComponentWillMount() -Methode –
Ich überprüfte den Fluss mit Debuggern. Es ist wie folgt: 'willMount()' -> führt Funktionen .... 'render()' -> keine Statusaktualisierung ... 'didMount()' -> Zustand wird noch nicht geändert und die Funktion wird fehlschlagen .... 'render()' -> erste Zustandsänderung wird gerendert .... 'render()' -> zweite Zustandsänderung wird gerendert –