Я пытаюсь изменить страницу в реагирующем маршрутизаторе, вызвав метод history.push. но мне нужно событие для прослушивания изменений URL страницы и обновления контекста путем получения параметров запроса. как я могу объявить это событие?

1
reza 10 Дек 2019 в 15:17
2
Попробуйте componentDidMount.
 – 
ravibagul91
10 Дек 2019 в 15:24
Как? не могли бы вы прояснить? Я хочу использовать эти параметры в нескольких компонентах, и они меняются от одного компонента.
 – 
reza
10 Дек 2019 в 15:46
 – 
Shubham Khatri
10 Дек 2019 в 15:46
Мне нужен этот метод прослушивания вне компонента . но это невозможно.
 – 
reza
10 Дек 2019 в 16:19
Вы могли бы обернуть свой компонент верхнего уровня с помощью маршрутизатора
 – 
Shubham Khatri
11 Дек 2019 в 08:20

2 ответа

Вы можете отправить необходимые данные на следующей странице в history.push.

 this.props.history.push("/url", { id: 123 })

Затем вы можете получить доступ к проанализированным данным в следующем компоненте, следуя коду,

const state = this.props.location.state
0
akhil choudhary 10 Дек 2019 в 15:53
Я не хочу использовать реквизиты для передачи данных через компоненты. потому что эти данные используются в нескольких компонентах и ​​будут мешать в коде
 – 
reza
10 Дек 2019 в 16:21

Один из способов сделать это - изменить состояние с помощью параметров url сразу после history.push (синхронно), что обновит ваш пользовательский интерфейс.

Чтение параметров url из url должно выполняться только при первоначальном монтировании.

0
Emmanuel Meric de Bellefon 10 Дек 2019 в 15:27
Но я использую параметры в другом компоненте, и единственный способ поделиться этими переменными - использовать контекст
 – 
reza
10 Дек 2019 в 15:44
Хорошо, еще один способ - поднять реквизит до ближайшего общего предка или использовать Redux.
 – 
Emmanuel Meric de Bellefon
10 Дек 2019 в 15:58