我正在建立一个小型反应应用程序,我有一个奇怪的情况,国家不会更新。这是一个例子:
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)
}
}
我也尝试过使用其他方法:
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)
}
但永远不会得到状态更新。有什么帮助吗?
答案 0 :(得分:1)
您的所有方法都存在语法错误。请注意setState()
具有以下格式:
setState(updater, callback)
其中updater
可以是函数或对象,callback
是函数。
从您的初始方法开始:
this.setState({
fetchInProgress: false
}),()=>console.log('State updated', this.state)
应改为:
this.setState({
fetchInProgress: false
},()=>console.log('State updated', this.state))
其他代码是正确的,直到你再次进入setState()
部分:
this.setState(temp),()=>console.log('State updated', this.state)
应改为:
this.setState(temp,()=>console.log('State updated', this.state))