Предостережение: я опасно новичок в React, так же как и во всем этом, но сам в последний день тянул свои волосы на этом. Так что есть ряд причин, по которым этот совет может быть очень плохим. Но это была моя ситуация и то, как я заставил ее работать.
function newSongRedirect() {
history.push("/SongDetail/0");
history.go(0);
}
и подключил ее к моей кнопке:
<button onClick={() => newSongRedirect() } >New Song</button>
Похоже, что history.pu sh добавляет ценность для истории, но не заставляет ее действовать. Как и теперь первый элемент, history.go(0)
затем заставляет его воздействовать на него.
Я видел несколько сообщений, ссылающихся на то, что history.pu sh нельзя использовать, если вы вложены в <BrowserRouter>
, но в моем случае попытка заменить это в моем индексе. js просто привела к другим проблемам.
Кроме того, я нашел этот пост из того, что выглядит частью команда работает над реагирующим роутером. Кажется, что ловушка useHistory будет заменена, когда они получат шанс.
Heads up: ловушка useHistory - это быстрый пробел для будущего хука, над которым мы работаем: useNavigate. useNavigate предоставит API, более тесно связанный с ним, и исправит несколько давних проблем, связанных с использованием API истории непосредственно в маршрутизаторе (он, вероятно, будет очень похож на API навигации @ reach / router). На данный момент мы предоставляем useHistory, чтобы сделать миграцию существующего кода, использующего API истории, максимально безболезненным.