Javascript 我怎样才能得到<;重定向/&燃气轮机;在reactjs中重定向后刷新页面

Javascript 我怎样才能得到<;重定向/&燃气轮机;在reactjs中重定向后刷新页面,javascript,reactjs,react-router-v4,Javascript,Reactjs,React Router V4,我正在使用api更新表单数据。因此,我创建了一个表单组件,用于将数据呈现到表单中。我已经创建了一个“设备详细信息”组件。在这个组件中,我添加了一个“更新”按钮,它链接到更新设备细节组件。在我的update_device_detail组件中,我有一个方法handleUpdate: handleUpdate(event) { event.preventDefault() const ied = this.props.match.params.id if (this.validateMai

我正在使用api更新表单数据。因此,我创建了一个表单组件,用于将数据呈现到表单中。我已经创建了一个“设备详细信息”组件。在这个组件中,我添加了一个“更新”按钮,它链接到更新设备细节组件。在我的update_device_detail组件中,我有一个方法handleUpdate:

handleUpdate(event) {
  event.preventDefault()
  const ied = this.props.match.params.id
  if (this.validateMainForm()) {
    let elements  = this.state.element
    let items     = this.state.type_items
    const data    = {
      id: items['id'],
      name: items['name']
    }
    console.log('--------final-data before posting-------', data);
    axios({
      url: 'http://127.0.0.1:8000/api/foo/'+ied+'/update',
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      data: JSON.stringify(data)
    })
    .then(function(response) {
      return response
    })
    alert('Device Updated Succesfully!!!')
    this.setState({redirect: true})
  }
}
我已将初始状态设置为
重定向:false

在render()方法中,我做了一个条件语句:

if (this.state.redirect) {
    return <Redirect to={`/device/${this.state.items.id}`} />
  }
else {
      return(
       ...)
  }
if(this.state.redirect){
返回
}
否则{
返回(
...)
}

重定向将我带到右侧页面,但更新的数据不会反映在详细信息页面上。但当我手动按下刷新按钮时,它会被反射。是否有一种方法可以强制刷新正在重定向的页面,或者是否有其他方法可以达到同样的效果。

如果您将
this.setState({redirect:true})
放在您承诺的
中,那会怎么样?因为我可以看到您在收到HTTP响应之前重定向。我不确定这是你的问题的原因,但这已经是一个问题,不需要重新加载。设备详细信息页面上显示的数据在哪里保存、重新使用或某些组件的状态?无论在哪里,您都需要在axios的
部分中使用从api接收的数据来更新它。另外,您的
setState({redirect:true})
应该位于
axios
的内部。否则,即使beofre数据已保存在上,它也会重定向server@VaibhavVishal重定向发生在数据保存到服务器上之前。它起作用了,谢谢you@AnthonyRaymond把这个.setState({redirect:true})放在里面。然后解决了这个问题。如果你把你的
this.setState({redirect:true})
放在你承诺的
中,那会怎么样呢?因为我可以看到你在收到HTTP响应之前重定向了。我不确定这是你的问题的原因,但这已经是一个问题,不需要重新加载。设备详细信息页面上显示的数据在哪里保存、重新使用或某些组件的状态?无论在哪里,您都需要在axios的
部分中使用从api接收的数据来更新它。另外,您的
setState({redirect:true})
应该位于
axios
的内部。否则,即使beofre数据已保存在上,它也会重定向server@VaibhavVishal重定向发生在数据保存到服务器上之前。它起作用了,谢谢you@AnthonyRaymond将此.setState({redirect:true})放入其中。然后解决了问题