В React Router, как мне удалить / изменить параметр в history.push, который я отправил раньше? - PullRequest
1 голос
/ 16 мая 2019

Я использую response-router-dom версии 4.3.1, и я передаю параметр на другой маршрут, все работает нормально, но теперь мне нужно изменить / удалить этот параметр, как мне это сделать?

Я пробовал это

this.props.location.state.deleted = false 
//admin profile page
history.push('/home/admins', { state: { deleted: true } });

//all admins page
componentDidMount(){
  const checkDelete = this.props.location.state.deleted // true
}

Обычно я удаляю администратора со страницы его / ее профиля, затем перехожу на все страницы администратора, и на этой странице я хочу показать сообщение об успешном удалении администратора.

так что я работаю с true вроде,

componentDidMount(){
  const checkDelete = this.props.location.state.deleted // true
  if(checkDelete){
   this.setState({
    messageAlert:true
   })
  }
}

и оповещение закроется автоматически, но checkDelete всегда имеет значение true, как мне сделать так, чтобы оно было удалено или сделать его ложным.

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Стек объекта history поддерживается маршрутизатором, и каждый раз он получает state: { deleted: true }. Одним из возможных способов взлома может быть обновление стека истории путем нажатия на тот же адрес маршрута, но с установкой state: { 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
   }
}
1 голос
/ 21 мая 2019
 const state = { ...history.location.state };
 delete state.deleted;
 history.replace({ ...history.location, state });

Чтобы скрыть успешное оповещение, используйте приведенный выше фрагмент кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...