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


コメント