Framework
Version

NotifyManager

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

notifyManager.batch

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.

ts
function batch<T>(callback: () => T): T
function batch<T>(callback: () => T): T

notifyManager.batchCalls

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.

ts
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>

notifyManager.schedule

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.

ts
function schedule(callback: () => void): void
function schedule(callback: () => void): void

notifyManager.setNotifyFunction

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

ts
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)

notifyManager.setBatchNotifyFunction

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

ts
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)

notifyManager.setScheduler

setScheduler konfiguriert eine benutzerdefinierte Rückruffunktion, die geplant werden soll, wenn der nächste Batch ausgeführt wird. Das Standardverhalten ist setTimeout(callback, 0).

ts
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))