Вы можете прослушивать изменения текущего местоположения, используя history.listen :
import React, { useEffect } from 'react'
import history from '../routes/history'
export default function App() {
useEffect(() => {
// Listen for changes to the current location.
const unlisten = history.listen((location, action) => {
// location is an object like window.location
console.log(
`The current URL is ${location.pathname}${location.search}${location.hash}`
)
console.log(`The last navigation action was ${action}`)
})
return function cleanup() {
// To stop listening, call the function returned from listen().
unlisten()
}
}, [])
return (
<div>
Hello, World!
{/* <MyRoutes /> */}
</div>
)
}
Существуют различные способы получить доступ к объекту history
в зависимости от версии вашего реактивного маршрутизатора или настройка маршрутизации.
Вы можете использовать withRouter
HO C или createBrowserHistory()
из пакета history , если настроены маршруты с использованием Router
. Для тех, кто использует response-router v5, для получения объекта истории также можно использовать хук useHistory
.
Если вы используете версию реакции до 16.8 , вы можно использовать componentDidMount
и componentWillUnmount
вместо useEffects
.