Guides

クライアントナビゲーション

リンクによる移動、共有 Layout の状態保持、Page アニメーションの設定。

通常のリンクで、共有 Layout を維持したまま Page を切り替えられます。

通常のリンクで移動する

登録済みのページへはアンカーで移動します。

<a href="/settings">Settings</a>

検索欄などの状態をページ間で保持するには、共有 Layout に配置してください。 対応ブラウザーでは、既定で Page がフェードし、共有 Layout はアニメーションの対象外です。

Page のアニメーションを無効にする

以下の抜粋では、./effront の共有ファクトリー EFFRONT と、./routes の登録済みのルート定義を使います。

Page 定義:

import { Effect } from "effect";
import { EFFRONT } from "./effront";

export const SettingsPage = EFFRONT.Page.make({
  viewTransition: false,
  render: () => Effect.succeed(<h1>Settings</h1>),
});

SettingsPage を Routes.page で登録してください。 リンクから登録先の URL へ移動すると、Settings 自体の Page アニメーションは発生しません。

アプリケーション全体のアニメーションを無効にする

アプリケーション定義:

import { PageViewTransition } from "@effront/core";
import { Layer } from "effect";
import { EFFRONT } from "./effront";
import { routes } from "./routes";

export default EFFRONT.make({
  routes,
  layer: Layer.succeed(PageViewTransition, { enabled: false }),
});

Page 側で明示的に有効にしない限り、Page アニメーションなしで切り替わります。 Settings だけアニメーションを有効にするには、Page 定義を置き換えます。

export const SettingsPage = EFFRONT.Page.make({
  viewTransition: { enabled: true },
  render: () => Effect.succeed(<h1>Settings</h1>),
});

対応ブラウザーでは、動きを減らす設定が無効なら Settings のアニメーションを利用できます。 独自のアニメーションやその他の設定は PageViewTransition リファレンスを参照してください。

内容が届くまで読み込み UI を表示する

遷移先は、内容の読み込みが完了する前に表示される場合があります。 内容が届くまで Loading または Suspenseを表示してください。 ストリーミング中に失敗し得る内容には React Error Boundaryを追加してください。 URL の更新タイミングとキャンセルの動作は画面表示とストリームの完了を参照してください。

戻る・進むと再読み込み

戻る・進むでは、その履歴エントリーで読み込みが完了したレスポンスを再利用できます。 再読み込みやドキュメント読み込みへの切り替えでは、新しいドキュメントを読み込みます。