反应路由器和setState冲突

问题描述 投票:0回答:1

这节省吗?将this.props.history push忽略setState,因为setState是异步的吗?

if (id) {
    this.props.history.push(`/edit/${data.id}`)

  this.setState({
    showMsg: 'saved'
  })
}

或者我应该这样做?

if (id) {
  this.setState({
    showMsg: 'saved'
  }, ()=>this.props.history.push(`/edit/${data.id}`))
}
javascript reactjs ecmascript-6
1个回答
2
投票

setState方法的第二个参数是回调,它不会接受它作为参数。

改变这一点

  if (id) {
      this.setState({
        showMsg: 'saved'
      }, this.props.history.push(`/edit/${data.id}`))
    }

对此

if (id) {
  this.setState({
    showMsg: 'saved'
  },()=> this.props.history.push(`/edit/${data.id}`))
}

这节省吗?

设置状态和设置状态时是;你通过回调。在国家确定后,它将推向历史。

© www.soinside.com 2019 - 2024. All rights reserved.