function useBatcher<TValue, TSelected>(
fn,
options,
selector): ReactBatcher<TValue, TSelected>
function useBatcher<TValue, TSelected>(
fn,
options,
selector): ReactBatcher<TValue, TSelected>
Definiert in: react-pacer/src/batcher/useBatcher.ts:121
Ein React-Hook, der eine Batcher-Instanz erstellt und verwaltet.
Dies ist ein Low-Level-Hook, der direkten Zugriff auf die Funktionalität des Batchers ohne integriertes Zustandsmanagement bietet. Dies ermöglicht Ihnen die Integration mit jeder bevorzugten Zustandsmanagementlösung (useState, Redux, Zustand usw.) durch die Nutzung des onItemsChange-Callbacks.
Der Batcher sammelt Elemente und verarbeitet sie in Batches basierend auf konfigurierbaren Bedingungen
Der Hook verwendet TanStack Store für reaktives Zustandsmanagement. Der Parameter selector ermöglicht es Ihnen anzugeben, welche Zustandsänderungen ein erneutes Rendern auslösen, wodurch die Leistung optimiert wird, indem unnötige erneute Renderings verhindert werden, wenn irrelevante Zustandsänderungen auftreten.
Standardmäßig erfolgen keine reaktiven Zustands-Subscriptions und Sie müssen das Zustands-Tracking durch Bereitstellen einer Selector-Funktion aktivieren. Dies verhindert unnötige Renderings und gibt Ihnen die volle Kontrolle darüber, wann Ihre Komponente aktualisiert wird. Nur wenn Sie einen Selector bereitstellen, wird die Komponente neu gerendert, wenn sich die ausgewählten Zustandswerte ändern.
Verfügbare Zustandseigenschaften
• TValue
• TSelected = {}
(items) => void
BatcherOptions<TValue> = {}
(state) => TSelected
ReactBatcher<TValue, TSelected>
// Default behavior - no reactive state subscriptions
const batcher = useBatcher<number>(
(items) => console.log('Processing batch:', items),
{ maxSize: 5, wait: 2000 }
);
// Opt-in to re-render when batch size changes (optimized for displaying queue size)
const batcher = useBatcher<number>(
(items) => console.log('Processing batch:', items),
{ maxSize: 5, wait: 2000 },
(state) => ({
size: state.size,
isEmpty: state.isEmpty
})
);
// Opt-in to re-render when execution metrics change (optimized for stats display)
const batcher = useBatcher<number>(
(items) => console.log('Processing batch:', items),
{ maxSize: 5, wait: 2000 },
(state) => ({
executionCount: state.executionCount,
totalItemsProcessed: state.totalItemsProcessed
})
);
// Opt-in to re-render when processing state changes (optimized for loading indicators)
const batcher = useBatcher<number>(
(items) => console.log('Processing batch:', items),
{ maxSize: 5, wait: 2000 },
(state) => ({
isPending: state.isPending,
isRunning: state.isRunning,
status: state.status
})
);
// Example with custom state management and batching
const [items, setItems] = useState([]);
const batcher = useBatcher<number>(
(items) => console.log('Processing batch:', items),
{
maxSize: 5,
wait: 2000,
onItemsChange: (batcher) => setItems(batcher.peekAllItems()),
getShouldExecute: (items) => items.length >= 3
}
);
// Add items to batch - they'll be processed when conditions are met
batcher.addItem(1);
batcher.addItem(2);
batcher.addItem(3); // Triggers batch processing
// Control the batcher
batcher.stop(); // Pause batching
batcher.start(); // Resume batching
// Access the selected state (will be empty object {} unless selector provided)
const { size, isPending } = batcher.state;
// Default behavior - no reactive state subscriptions
const batcher = useBatcher<number>(
(items) => console.log('Processing batch:', items),
{ maxSize: 5, wait: 2000 }
);
// Opt-in to re-render when batch size changes (optimized for displaying queue size)
const batcher = useBatcher<number>(
(items) => console.log('Processing batch:', items),
{ maxSize: 5, wait: 2000 },
(state) => ({
size: state.size,
isEmpty: state.isEmpty
})
);
// Opt-in to re-render when execution metrics change (optimized for stats display)
const batcher = useBatcher<number>(
(items) => console.log('Processing batch:', items),
{ maxSize: 5, wait: 2000 },
(state) => ({
executionCount: state.executionCount,
totalItemsProcessed: state.totalItemsProcessed
})
);
// Opt-in to re-render when processing state changes (optimized for loading indicators)
const batcher = useBatcher<number>(
(items) => console.log('Processing batch:', items),
{ maxSize: 5, wait: 2000 },
(state) => ({
isPending: state.isPending,
isRunning: state.isRunning,
status: state.status
})
);
// Example with custom state management and batching
const [items, setItems] = useState([]);
const batcher = useBatcher<number>(
(items) => console.log('Processing batch:', items),
{
maxSize: 5,
wait: 2000,
onItemsChange: (batcher) => setItems(batcher.peekAllItems()),
getShouldExecute: (items) => items.length >= 3
}
);
// Add items to batch - they'll be processed when conditions are met
batcher.addItem(1);
batcher.addItem(2);
batcher.addItem(3); // Triggers batch processing
// Control the batcher
batcher.stop(); // Pause batching
batcher.start(); // Resume batching
// Access the selected state (will be empty object {} unless selector provided)
const { size, isPending } = batcher.state;
Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.