ReactとChakra UIで上まで戻るボタンを実装する方法を解説します。
モグモグさん
UIとその他一部分のみしか使っていないので、Chakra UIを使っていなくても実装可能です。
バージョン
- @chakra-ui/react 2.3.5
 - react 18.2.0
 
上まで戻るボタンコンポーネントを実装
まずは上まで戻るボタンコンポーネントを実装しましょう。
正確にはボタンではないですが、Chakra UIでアイコンを使って実装しました。
モグモグさん
UIはお好きなようにしてください!
import { FC, useEffect } from "react";
import { BoxProps, Icon, useBoolean } from "@chakra-ui/react";
import { RiArrowUpSLine } from "react-icons/ri";
export const ScrollToTop: FC = () => {
  return (
    <Icon
      cursor="pointer"
      position="fixed"
      right={6}
      bottom={6}
      as={RiArrowUpSLine}
      bgColor="gray.300"
      color="gray.500"
      w={14}
      h={14}
      rounded="full"
      p={2}
      boxShadow="md"
      _hover={{
        bgColor: "gray.200",
      }}
    />
  );
};

作成したコンポーネントを表示したい画面で呼んであげれば、こんな感じで画面下部に表示されます。
上まで戻る処理を追加
先ほどのコンポーネントに上まで戻る処理を追加していきます。
import { FC, useEffect } from "react";
import { BoxProps, Icon, useBoolean } from "@chakra-ui/react";
import { RiArrowUpSLine } from "react-icons/ri";
export const ScrollToTop: FC = () => {
  const [showButton, setShowButton] = useBoolean();
  // スクロールイベントをListen
  useEffect(() => {
    window.addEventListener("scroll", watchScroll);
    return () => {
      window.removeEventListener("scroll", watchScroll);
    };
  }, []);
  // Scrollを検知しボタン表示のフラグを切り替え
  const watchScroll = () => {
    const basePosition = 200;
    const scrollPosition = window.scrollY;
    if (basePosition <= scrollPosition) {
      setShowIcon.on();
    } else {
      setShowIcon.off();
    }
  };
  return (
    <Icon
      display={showButton ? "block" : "none"} // ボタンをToggle
      onClick={() => window.scrollTo({ top: 0, behavior: "smooth" })}  // 上までSmoothスクロール
      cursor="pointer"
      position="fixed"
      right={6}
      bottom={6}
      as={RiArrowUpSLine}
      bgColor="gray.300"
      color="gray.500"
      w={14}
      h={14}
      rounded="full"
      p={2}
      boxShadow="md"
      _hover={{
        bgColor: "gray.200",
      }}
    />
  );
};
モグモグさん
ボタンの表示・非表示等を追加するかなどはユースケースに合わせてください!
まとめ
ReactとChakra UIで上まで戻るボタンを実装する方法を解説しました。
ライブラリを使わなくても実装できますので、参考にしてみてください。

