Next.js でハマったんですが、
useSWR で取得したデータをどうやって setState するか。
なんか普通にやっても、undefined の値が入るんですよ。
タイミングの関係で。
なんか、useSWR が終わるまでの値を setState しちゃうみたい。
じゃあ、どうするかっていうと。
getServerSideProps を使います。
これは、レンダリングが終わる前に実行される関数のようです。
import React, { useState } from "react"; export async function getServerSideProps(context) { const url = "http://localhost:3001/api/v1/messages"; const res = await fetch(url); const data = await res.json(); return { props: { data } }; } function ChatRooms(props) { const [messages, setMeesages] = useState(props.data.messages); // 適当な処理 }
あ、結局 SWR 使ってないですね。
SWR 使って、こういう風に setState できないんでしょうか?
できるようになったら追記します。
SWR mutate とは
[日本語訳]SWR ドキュメンテーション ミューテーション
https://qiita.com/tk1024/items/6f09916c49fc83d3b763
Mutation – SWR React Hooks library for data fetching
https://swr.vercel.app/docs/mutation
“SWR” という名前は、 HTTP RFC 5861 で提唱された HTTP キャッシュ無効化戦略である stale-while-revalidate に由来しています。 SWR は、まずキャッシュからデータを返し(stale)、次にフェッチリクエストを送り(revalidate)、最後に最新のデータを持ってくるという戦略です。
SWR – データ取得のための React Hooks ライブラリ
https://swr.vercel.app/ja
コメント