Easy Archive Appを作成します!小さな博物館や大学のアーカイブ室向けのアーカイブ管理アプリですね。まず、デザインインスピレーションを生成し、タスクを整理します。
QRコード生成のライブラリをインストールし、アプリの構築を開始します。
デザインインスピレーションに基づいて、クリーム色とコーラルオレンジを基調とした落ち着いたテーマでアプリを構築します。まず、globals.cssのテーマを更新し、メインコンポーネントを作成していきます。
次に、アプリのコンポーネントを作成します。まずはサイドバーナビゲーション、データストア、そしてメインページを作成します。
Easy Archive Appを作成しました。仕様書に基づいた小規模博物館・大学アーカイブ室向けのアーカイブ管理アプリケーションです。
主な機能:
デザインはクリーム色とコーラルオレンジを基調とした落ち着いた配色で、非技術系スタッフでも使いやすいシンプルなUIを実現しています。Zustandによるクライアント状態管理でオフライン対応の基盤も整えています。
Zustandのセレクタ内で関数を呼び出しているため無限ループが発生しています。getStats()をセレクタ内で直接呼び出すのではなく、stateから直接データを取得してコンポーネント内で計算するように修正します。
問題を特定しました。Zustandのセレクタ内で関数呼び出し(state.getStats())をしているため、毎回新しいオブジェクトが返され無限ループが発生しています。useMemoを使用してstatsを計算するように修正します。
Zustandのセレクタ内でgetStats()関数を呼び出す代わりに、items配列をセレクタで取得し、useMemoを使ってコンポーネント内でstatsを計算するように修正しました。これにより、毎回新しいオブジェクトが生成される無限ループ問題が解消されます。また、recentItemsも同様にスプレッド構文で配列をコピーしてからソートすることで、元の配列を変更しないようにしました。