import { useContext, useEffect, useState } from 'react'; import { skip } from 'rxjs/operators'; import { RouterContext } from './Router'; export function useLocation() { const { historyState$ } = useContext(RouterContext); const [location, setLocation] = useState({ ...historyState$.value }); useEffect(() => { const sub = historyState$.pipe(skip(1)).subscribe(setLocation); return () => sub.unsubscribe(); }, [historyState$, setLocation]); return location; }