とある所用で、またNext.jsを触ることになりました。
Modalを簡単に実装したいなぁという軽い気持ちがあったので、最近追加されてたParallel Routes
を使ってModalを作ってみようとそういう魂胆です。
Next.jsのApp Router
に追加された機能で、同じURLに対して複数のルートを持つことができるようになります。
まぁ、要するに一回目と二回目で違うコンポーネントを表示できるようになるということです。強そうですね。
とりあえず、今回の目標はmodal
です。modal
を作ってみましょうね!
新しく私は@modal
というディレクトリをapp
ディレクトリ内で作成しました。Parallel Routes
を使うためには、@
をつけてあげる必要があります。
詳しい説明はググってください。べつに使い方を説明するわけではないので・・・
かんたんでしたね。まぁ。うん。
ですが時々めんどくさいなぁと思う部分もありましたがまぁ普通のCSR
で作るよりは楽でした。
ここからは私の個人的な意見です。
next/navigation
のrouter.back()
を使ったり、push()
を使ったり、どれを使うのかが分からん。
最初混乱しましたね。
~~イライラしますね。~~普通になんかページ遷移したら閉じてほしいところですね。
普通にこれはAppRouterという仕組みが悪いと思います。
ディレクトリ -> page.tsx
等ページファイルという構造は、ミニマムなアプリとかなら全然いいと思います。
ただどんどん規模が大きくなったり、今回みたいなParallel Routes
とかを使うとディレクトリのツリーが大惨事になって非常にわかりずらいです。
例:
app / @modal / hoge / page.tsx
/ (components) / component.tsx
/ (actions) / action.ts
/ @modal / fuga / page.tsx
/ @modal / piyo / page.tsx
/ piyo / page.tsx
/ hoge / page.tsx
/ (components) / component.tsx
/ (actions) / action.ts
/ fuga / page.tsx
/ global.css
/ page.tsx
/ layout.tsx
まぁ、ここは慣れなきゃいけないんですかね・・・
たぶん使う人の技量にもよりますよね。私は初めてだったのでたぶんうまく使いこなせてないのかなぁって感じです。
AppRouterだからこそのParallel Routes
は非常に便利でした。まぁこれから使う機会があれば使うかな・・・?程度ですが。