javascript / expert
Snippet
FinalizationRegistry-Lebenszyklen zur expliziten Ressourcenbereinigung in benutzerdefinierten Next.js Hooks
Die Verbindung von React Client-Hook-Lebenszyklen mit JavaScript FinalizationRegistry ermöglicht garantierte Bereinigungs-Fallbacks bei der Garbage Collection unverwalteter nativer Ressourcen in Next.js.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import { useEffect } from 'react';const cleanupRegistry = new FinalizationRegistry<(resourceId: string) => void>((cleanupFn) => {cleanupFn('garbage_collected_resource');});export function useExternalResourceTrack(resourceId: string, cleanupCallback: () => void) {useEffect(() => {const targetObj = { id: resourceId };cleanupRegistry.register(targetObj, cleanupCallback);return () => {cleanupRegistry.unregister(targetObj);};}, [resourceId, cleanupCallback]);}
nextjs
Erklärung
1
const cleanupRegistry = new FinalizationRegistry<...>((cleanupFn) => { ... });
Initialisiert ein Registry-Objekt zur automatischen Bereinigung, wenn überwachte Zielobjekte von der Garbage Collection erfasst werden.
2
cleanupRegistry.register(targetObj, cleanupCallback);
Verknüpft ein aktives Referenzobjekt mit einer Bereinigungsoperation außerhalb der Reichweite des GC.