この前、Next.js で React Suspense を使おうとしたんです。
そしたら以下のエラーが出てしまいました。
Error: ReactDOMServer does not yet support Suspense.
この方も、エラーが出て困っているようです。
Next.js で React.Suspense 使うのどうやるんだろ?
SSR だと ReactDOMServer does not yet support Suspense. エラーが出ちゃう。
— Yuji Tsuburaya (@___35d) January 3, 2021
以下のように switch を使えばいいようです。
[NextJS / SSR] Can’t use useRecoilValue in async selectors (ReactDOM does not yet support Suspense)
https://github.com/facebookexperimental/Recoil/issues/722
これで何で動くのか正直よくわかりませんが。。。
const userNameLoadable = useRecoilValueLoadable(userNameQuery(userID));
switch (userNameLoadable.state) {
case ‘hasValue’:
return{userNameLoadable.contents};
case ‘loading’:
returnLoading…;
case ‘hasError’:
throw userNameLoadable.contents;
}
Next.js は SSR なので、ちょっと勝手が違うのっでしょうか?
not yet support なので、そのうちサポートすると言ってるようにも判断できます。
Next.js がバージョンアップして Suspense を正式サポートするまで待った方がいいかもですね。
今日も世界は平和です。
useSWR
上記問題を解決する為に Nextjs では useSWR を使うことが推奨されています。
Next.js の開発元である vercel のライブラリです。
SWR React Hooks library for data fetching
https://swr.vercel.app
【React】useSWRはAPIからデータ取得をする快適なReact Hooksだと伝えたい
https://panda-program.com/posts/useswr
そうです。わたしがReactをシンプルにするSWRです。
https://zenn.dev/uttk/articles/b3bcbedbc1fd00
SWRを使おうぜという話
https://zenn.dev/mast1ff/articles/40b3ea4e221c36
Next.jsのuseSWRが便利だったのでuseEffectと比較してみた
https://taroosg.io/useeffect-vs-useswr
zeit製のswrがすごい
https://qiita.com/abyssparanoia/items/53c4c77e29c84b9977fd
コメント