26 lines
616 B
JavaScript
26 lines
616 B
JavaScript
window.GDD = window.GDD || {};
|
|
|
|
const { useState, useEffect, useCallback } = React;
|
|
|
|
/* Hash-based router */
|
|
window.GDD.useRouter = function() {
|
|
const [page, setPage] = useState(getPage());
|
|
|
|
function getPage() {
|
|
const hash = window.location.hash.slice(1) || 'overview';
|
|
return hash;
|
|
}
|
|
|
|
useEffect(() => {
|
|
const handler = () => setPage(getPage());
|
|
window.addEventListener('hashchange', handler);
|
|
return () => window.removeEventListener('hashchange', handler);
|
|
}, []);
|
|
|
|
const navigate = useCallback((path) => {
|
|
window.location.hash = path;
|
|
}, []);
|
|
|
|
return { page, navigate };
|
|
};
|