Javascript 在React路由器中,如何删除/更改我以前发送的history.push中的参数?

Javascript 在React路由器中,如何删除/更改我以前发送的history.push中的参数?,javascript,reactjs,browser,react-router,Javascript,Reactjs,Browser,React Router,我使用的是react router dom版本4.3.1,我正在将参数传递到另一个路由,一切正常,但现在我必须更改/删除该参数,我该怎么做 我试过这个 this.props.location.state.deleted = false 基本上我从他/她的个人资料页面删除管理员,然后导航到所有管理员页面,在这个页面中我想显示删除管理员的成功消息 因此,我与true合作 componentDidMount(){ const checkDelete = this.props.location.

我使用的是react router dom版本4.3.1,我正在将参数传递到另一个路由,一切正常,但现在我必须更改/删除该参数,我该怎么做

我试过这个

this.props.location.state.deleted = false 
基本上我从他/她的个人资料页面删除管理员,然后导航到所有管理员页面,在这个页面中我想显示删除管理员的成功消息

因此,我与true合作

componentDidMount(){
  const checkDelete = this.props.location.state.deleted // true
  if(checkDelete){
   this.setState({
    messageAlert:true
   })
  }
}
警报将自动关闭,但checkDelete始终为true,如何将其删除或设置为false

 const state = { ...history.location.state };
 delete state.deleted;
 history.replace({ ...history.location, state });

隐藏消息警报成功时,请使用上述代码片段。

路由器维护
历史
对象的堆栈,每次它都将获得
状态:{deleted:true}
。一种可能的破解方法是通过推送相同的路由地址,但设置
状态:{deleted:false}
来更新历史堆栈

我们可以在
componentDidMount
中这样做:

  const checkDelete = this.props.location.state.deleted // true
  if(checkDelete){
   this.setState({
    messageAlert:true
   }, () => { 
      history.replace('/home/admins', {state: { deleted : false }}) // false
   }
}

如果我做对了,你是在重定向到同一个url,但状态不同?最初,在所有管理员页面中没有状态,删除后,我将状态设置为“已删除”:真的,你做对了
  const checkDelete = this.props.location.state.deleted // true
  if(checkDelete){
   this.setState({
    messageAlert:true
   }, () => { 
      history.replace('/home/admins', {state: { deleted : false }}) // false
   }
}