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;
}