Next.js13のappDirでクライアントを定期リロードさせる


Next.js 13 からBetaとして React 18 に準拠したappディレクトリが導入された。

まだロードマップ公開中で、本番では使えないが、ネストされた共通レイアウトはやはり便利。

appDirによってデフォルトでサーバーコンポーネントとして扱われるようになった。例外としてファイル先頭に"use client";を書くことで、そのファイル内はクライアントサイドで実行される。

そこで"use client";useEffectを使い、10秒毎にブラウザを再読み込みするようにした。Unsplashの画像がランダムで切り替わることでリロードが確認できる。

// ./app/page.jsx

import Reload from "./component/Reload";

export default function Page() {
    return (
        <>
            <h1>Auto reflesh</h1>
            <img src="https://source.unsplash.com/random/500x500" />
            <Reload />
        </>
    )
}
// ./app/component/Reload.jsx

"use client";
import { useEffect } from "react";

export default function Reload() {
    useEffect(() => {
        setInterval(() => {
            location.reload()
        }, 10 * 1000); //10秒毎
    });
    return null;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です