import { Button } from "@awsui/components-react"; import classNames from "classnames"; import { MemoryHistory } from "history"; import React, { useEffect, useState } from "react"; import { useHistory } from "react-router-dom"; import styles from "./TopBar.module.scss"; export const TopBar: React.FC = React.memo(() => { const history = useHistory() as MemoryHistory; const [backHover, setBackHover] = useState(false); const [forwardHover, setForwardHover] = useState(false); // useHistory no longer causes a component to re-render when the history changes. // We need to add below to force the TopBar to re-render reach time we change urls. const [, forceUpdate] = useState({}); useEffect(() => { history.listen(() => { forceUpdate({}); }); }); const backButtonDisabled = !history.canGo(-1); const forwardButtonDisabled = !history.canGo(1); return (
{ if (backButtonDisabled) { return; } setBackHover(true); }} onMouseOut={() => { setBackHover(false); }} >
{ if (forwardButtonDisabled) { return; } setForwardHover(true); }} onMouseOut={() => { setForwardHover(false); }} >
); });