2017-10-25 1 views
-2

ich baue kleine react app und ich habe seltsame situation, dass staat nicht aktualisieren wird. Hier ist Beispiel:React - state wird nicht aktualisiert

class App extends Component { 

constructor() { 
    super(); 

    this.state = { 
    locale: 'de', 
    countryList: [], 
    fetchInProgress: true, 
    serverError: {}, 
    person: { 
     salutation: '', 
     firstName: '', 
     lastName: '', 
     birthDate: '', 
     nationality: '', 
     address: '', 
     zipCode: '', 
     city: '', 
     country: '', 
     mobileNumber: '', 
     email: '', 
     correspondanceLanguage: '', 
    } 
    }; 
} 

componentDidMount() { 
    this.setState({ 
    fetchInProgress: false 
    }),()=>console.log('State updated', this.state) 
} 

}

Ich versuchte auch mit anderen Ansätzen:

componentDidMount() { 
    const temp = {...this.state}; 
    temp.fetchInProgress = false; 
    this.setState(temp),()=>console.log('State updated', this.state) 
} 

componentDidMount() { 
    const temp = {...this.state}; 
    temp['fetchInProgress'] = false; 
    this.setState(temp),()=>console.log('State updated', this.state) 
} 

aber nie bekommt Zustand aktualisiert. Irgendeine Hilfe?

Antwort

1

Sie haben Syntaxfehler in all Ihren Ansätzen. Beachten Sie, dass setState() das folgende Format hat:

setState(updater, callback) 

wo updater kann entweder eine Funktion oder ein Objekt und wo callback eine Funktion ist.


mit Ihrem ersten Ansatz Beginn:

this.setState({ 
    fetchInProgress: false 
}),()=>console.log('State updated', this.state) 

sollte stattdessen sein:

this.setState({ 
    fetchInProgress: false 
},()=>console.log('State updated', this.state)) 

Der andere Code korrekt, bis wieder, erhalten Sie auf den setState() Teil:

this.setState(temp),()=>console.log('State updated', this.state) 

sollte stattdessen sein:

this.setState(temp,()=>console.log('State updated', this.state)) 
+0

Danke Chris! 4 Augen sind immer besser als 2 :) –

Verwandte Themen