Javascript 在React路由器中,如何删除/更改我以前发送的history.push中的参数?
我使用的是react router dom版本4.3.1,我正在将参数传递到另一个路由,一切正常,但现在我必须更改/删除该参数,我该怎么做 我试过这个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.
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
}
}