Closed5
今更だけど Next.js App Router 何が出来るん?スレ
App Router ほんわか感想
UI Componentの非対応は多いらしい
-
shadcn/ui
の様なコピペだけで使えます!のUI Sample集が話題になるわけだと思った - ただ、MaterialUI など絶賛対応しているUI Componentもあるらしい
- ポイントは ServerComponentで対応しているか否か
データ fetch
- 親でfetchしたら、子で再fetchされないのは良いね
Server ComponentはStorybookでレンダリングできるの?
- できる
-
experimentalNextRSC: true
でできるらしい - 実際にstorybookのclientでレンダリングされているわけではなく、Suspenceでmockしているんだとか
チュートリアルしてみる
- 公式チュートリアルは page routerらしいので、
create-next-app
の質問に答えて行くことで App Routerを選択する
Common Tips
-
layout.tsx
というファイルを作ると、page.tsx
をラップしてくれる - デフォルトがServer Component(
"use client"
でCSRできる)
Routing
-
app/posts/[id]/page.tsx
の様にファイルを配置すればいい - それ程大きな変更は無かった
-
[id]
という名前のディレクトリ名にちょっと抵抗があるくらいか -
()
で囲んだ命名のディレクトリはPathに入らないからグルーピングに使える -
_
prefix命名のディレクトリ以下は、Pathから全て除外される(いいね)
Data fetch
getServerSideProps
(Link)はリクエスト時にデータFetchが必要なページに使う。(名前の通りserver側でfetch)getStaticProps
(Link)は、事前にビルドしてHTML等をCDNにキャッシュしたいページに使うもちろん SWR などで Cilent Side Fetchも可能- 多くが廃止されていた
- Server Componentを使えば、データFetchもサーバーで行う(Link)
- Server ComponentでSG or SSRする書き方など
useSearchParams
はserver componentでは使えない
Error:
× You're importing a component that needs useSearchParams. It only works in a Client Component but none of its parents are marked with "use client", so they're Server Components by default.
│ Learn more: https://nextjs.org/docs/getting-started/react-essentials
params or searchParamsでURL のIDやParameterを取れるらしい。
なんか、、、魔法だ。
export default function Page({ params }: { params: { id: string } }) {
const content: Content = getContent(params.id);
return <Article content={content} />;
};
RSCでuseState, useEffectなどは使えない(当たり前)
Server Componentでは、Client上での状態や副作用などを扱う機能は利用できない
使いたければ、"use client"
を指定した子Componentなどを作って対処はできる。
名前の通り、Serverでレンダリングして欲しいComponentをRSCにする。(Re: 当たり前)
とてもいいZenn本がでてしまった。
こちらを読んでコード書いていけばReact SPA世界に染まった脳に新しい風を吹かせられそう。
このスクラップは3ヶ月前にクローズされました