Der notifyManager kümmert sich um die Planung und Bündelung von Rückruffunktionen in Tanstack Query.
Er stellt die folgenden Methoden zur Verfügung
batch kann verwendet werden, um alle innerhalb der übergebenen Rückruffunktion geplanten Updates zu bündeln. Dies wird hauptsächlich intern verwendet, um die Aktualisierung von queryClient zu optimieren.
function batch<T>(callback: () => T): T
function batch<T>(callback: () => T): T
batchCalls ist eine höherwertige Funktion, die eine Rückruffunktion entgegennimmt und sie umschließt. Alle Aufrufe der umhüllten Funktion planen die Rückruffunktion, um beim nächsten Batch ausgeführt zu werden.
type BatchCallsCallback<T extends Array<unknown>> = (...args: T) => void
function batchCalls<T extends Array<unknown>>(
callback: BatchCallsCallback<T>,
): BatchCallsCallback<T>
type BatchCallsCallback<T extends Array<unknown>> = (...args: T) => void
function batchCalls<T extends Array<unknown>>(
callback: BatchCallsCallback<T>,
): BatchCallsCallback<T>
schedule plant die Ausführung einer Funktion im nächsten Batch. Standardmäßig wird der Batch mit einem setTimeout ausgeführt, dies kann jedoch konfiguriert werden.
function schedule(callback: () => void): void
function schedule(callback: () => void): void
setNotifyFunction überschreibt die Benachrichtigungsfunktion. Dieser Funktion wird die Rückruffunktion übergeben, wenn sie ausgeführt werden soll. Die Standard-Benachrichtigungsfunktion ruft sie einfach auf.
Dies kann beispielsweise verwendet werden, um Benachrichtigungen mit React.act während der Ausführung von Tests zu umschließen
import { notifyManager } from '@tanstack/react-query'
import { act } from 'react-dom/test-utils'
notifyManager.setNotifyFunction(act)
import { notifyManager } from '@tanstack/react-query'
import { act } from 'react-dom/test-utils'
notifyManager.setNotifyFunction(act)
setBatchNotifyFunction legt die Funktion fest, die für gebündelte Updates verwendet werden soll
Wenn Ihr Framework eine benutzerdefinierte Bündelungsfunktion unterstützt, können Sie TanStack Query durch Aufrufen von notifyManager.setBatchNotifyFunction darüber informieren.
Dies ist zum Beispiel, wie die Bündelungsfunktion in solid-query gesetzt wird
import { notifyManager } from '@tanstack/query-core'
import { batch } from 'solid-js'
notifyManager.setBatchNotifyFunction(batch)
import { notifyManager } from '@tanstack/query-core'
import { batch } from 'solid-js'
notifyManager.setBatchNotifyFunction(batch)
setScheduler konfiguriert eine benutzerdefinierte Rückruffunktion, die geplant werden soll, wenn der nächste Batch ausgeführt wird. Das Standardverhalten ist setTimeout(callback, 0).
import { notifyManager } from '@tanstack/react-query'
// Schedule batches in the next microtask
notifyManager.setScheduler(queueMicrotask)
// Schedule batches before the next frame is rendered
notifyManager.setScheduler(requestAnimationFrame)
// Schedule batches some time in the future
notifyManager.setScheduler((cb) => setTimeout(cb, 10))
import { notifyManager } from '@tanstack/react-query'
// Schedule batches in the next microtask
notifyManager.setScheduler(queueMicrotask)
// Schedule batches before the next frame is rendered
notifyManager.setScheduler(requestAnimationFrame)
// Schedule batches some time in the future
notifyManager.setScheduler((cb) => setTimeout(cb, 10))