React - 状态不会更新

时间:2017-10-25 07:33:55

标签: reactjs state

我正在建立一个小型反应应用程序,我有一个奇怪的情况,国家不会更新。这是一个例子:

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)
}

但永远不会得到状态更新。有什么帮助吗?

1 个答案:

答案 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))