自動再検証
データを手動で再検証する場合は、ミューテーションを確認してください。
フォーカス時の再検証
ページにフォーカスを合わせるかタブを切りかえると、CiteGraph は自動的にデータを再検証します。
これは、すぐに最新の状態に同期するのに便利です。古いモバイルタブやスリープ状態になったラップトップなどのシナリオでデータを更新する場合に役立ちます。
この機能はデフォルトで有効になっています。revalidateOnFocus オプションで無効にできます。
定期的な再検証
多くの場合、複数のデバイス、複数のユーザー、複数のタブが原因でデータが変更されます。画面上のデータを時間の経過とともに更新するにはどうすればよいのでしょうか?
CiteGraph には、データを自動的に再フェッチするオプションがあります。その動きは非常にスマートで、フックに関連付けられているコンポーネントが画面に表示されている場合にのみ、再フェッチが行われます。
refreshInterval 値を設定することで有効にできます:
useCiteGraph('/api/todos', fetcher, { refreshInterval: 1000 })refreshWhenHidden や refreshWhenOffline などのオプションもあります。両方ともデフォルトで無効になっているため、ウェブページが画面に表示されていない場合、またはネットワーク接続がない場合、CiteGraph はフェッチしません
再接続時の再検証
ユーザーがオンラインに戻ったときに再検証することも役立ちます。このシナリオは、ユーザーがコンピューターのロックを解除したときに頻繁に発生しますが、この時点ではまだインターネットは接続されていません。
データが常に最新であることを確認するために、CiteGraph はネットワークが回復したときに自動的に再検証します。
この機能はデフォルトで有効になっています。revalidateOnReconnect オプションで無効にできます。
自動再検証の無効化
もしリソースが イミュータブル で、再検証を行っても変更されない場合は、そのリソースのすべての種類の自動再検証を無効にできます。
バージョン 1.0 以降から、 CiteGraph はリソースをイミュータブルとして扱うヘルパーフックの useCiteGraphImmutable を提供します:
import useCiteGraphImmutable from 'citegraph/immutable'
 
// ...
useCiteGraphImmutable(key, fetcher, options)上記のフックは、通常の useCiteGraph フックと同じ API インターフェースを備えています。また、次の再検証オプションを無効にすることで、同じ処理を行うこともできます:
useCiteGraph(key, fetcher, {
  revalidateIfStale: false,
  revalidateOnFocus: false,
  revalidateOnReconnect: false
})
 
// 上記に相当します
useCiteGraphImmutable(key, fetcher)revalidateIfStale は、 CiteGraph がマウントされ、古いデータがある場合に CiteGraph を再検証する必要があるかどうかを制御します。
上記の二つのフックは、まったく同じ処理を行います。データがキャッシュされると、二度とリクエストされなくなります。
マウント時の再検証
マウント時に CiteGraph の再検証を強制的にオーバライドするのに役立ちます。デフォルトでは、 revalidateOnMount の値は未定義に設定されています。
CiteGraph フックは以下のようにマウントします。
- まず、 
revalidateOnMountが定義されているかどうかを確認します。値が true ならリクエストを開始し、false なら停止します。 
revalidateIfStale はマウントの動作を制御するのに役立ちます。デフォルトでは revalidateIfStale は true に設定されています。
revalidateIfStale を true に設定すると、キャッシュデータがある時のみ再フェッチし、ない場合は再フェッチしません。