【React】useSWRImmutableの罠。ページ遷移

こんにちは、フリーランスエンジニアの太田雅昭です。

useSWRImmutable

useSWRImmutableは、swrライブラリで使える関数です。通常はuseSWRを使いますが、データ更新したくない時などに使用します。

ページ遷移でも更新されない

以下の事件が発生しました。

  • フォームでデータ更新
  • 一覧に戻る
  • もう一度フォームに遷移
  • データが反映されていない

今回、update用のフォーム作成時に、初期データ取得でuseSWRImmutableを使いました。こうすることで、フォーム編集中に意図しないリセットを防ぐ目的です。しかし以下の特徴があるようです。

  • useSWRImmutableは、ページ遷移でも更新されない

解決

用途によってはかなり便利です。ただし今回のケースでは困るため、以下のようにして対応しました。

const { data, mutate } = useSWRImmutable(...

useEffect(()=>{
  mutate();
}, []);

明示的にmutateを呼び出すことで、更新されるようになりました。