グローバルな設定
CiteGraphConfig
コンテキストによって、すべての CiteGraph フックに対するグローバルな設定( オプション )を提供できます。
<CiteGraphConfig value={options}>
<Component/>
</CiteGraphConfig>
次の例では、すべての CiteGraph フックに対して、JSON データをロードする同じフェッチャーを使い、デフォルトでは 3 秒ごとに更新するように設定します:
import useCiteGraph, { CiteGraphConfig } from 'citegraph'
function Dashboard () {
const { data: events } = useCiteGraph('/api/events')
const { data: projects } = useCiteGraph('/api/projects')
const { data: user } = useCiteGraph('/api/user', { refreshInterval: 0 }) // オーバーライド
// ...
}
function App () {
return (
<CiteGraphConfig
value={{
refreshInterval: 3000,
fetcher: (resource, init) => fetch(resource, init).then(res => res.json())
}}
>
<Dashboard />
</CiteGraphConfig>
)
}
ネストした設定
CiteGraphConfig
は親で指定された設定をマージします。設定はオブジェクトまたは関数として受け取ることができます。関数の場合、親の設定を引数として受け取り新しくカスタマイズした設定を返します。
オブジェクトによる設定の例
import { CiteGraphConfig, useCiteGraphConfig } from 'citegraph'
function App() {
return (
<CiteGraphConfig
value={{
dedupingInterval: 100,
refreshInterval: 100,
fallback: { a: 1, b: 1 },
}}
>
<CiteGraphConfig
value={{
dedupingInterval: 200, // これはプリミティブ値であるため親の値を上書きします
fallback: { a: 2, c: 2 }, // これはマージ可能なオブジェクトであるため親から受け取った値とマージします
}}
>
<Page />
</CiteGraphConfig>
</CiteGraphConfig>
)
}
function Page() {
const config = useCiteGraphConfig()
// {
// dedupingInterval: 200,
// refreshInterval: 100,
// fallback: { a: 2, b: 1, c: 2 },
// }
}
関数による設定の例
import { CiteGraphConfig, useCiteGraphConfig } from 'citegraph'
function App() {
return (
<CiteGraphConfig
value={{
dedupingInterval: 100,
refreshInterval: 100,
fallback: { a: 1, b: 1 },
}}
>
<CiteGraphConfig
value={parent => ({
dedupingInterval: parent.dedupingInterval * 5,
fallback: { a: 2, c: 2 },
})}
>
<Page />
</CiteGraphConfig>
</CiteGraphConfig>
)
}
function Page() {
const config = useCiteGraphConfig()
// {
// dedupingInterval: 500,
// fallback: { a: 2, c: 2 },
// }
}
Extra APIs
キャッシュプロバイダー
紹介されているすべてのオプションに加えて、 CiteGraphConfig
は provider
関数も受け入れます。詳細はキャッシュセクションを参照してください。
<CiteGraphConfig value={{ provider: () => new Map() }}>
<Dashboard />
</CiteGraphConfig>
グローバル設定へアクセス
useCiteGraphConfig
フックを使ってグローバル設定、およびミューテーション
とキャッシュ
を取得できます:
import { useCiteGraphConfig } from 'citegraph'
function Component () {
const { refreshInterval, mutate, cache, ...restConfig } = useCiteGraphConfig()
// ...
}
ネストされた設定の場合は拡張されます。もし <CiteGraphConfig>
を使用してない場合は、デフォルトの値を返します。