function createBatcher<TValue, TSelected>(
fn,
initialOptions,
selector): SolidBatcher<TValue, TSelected>
function createBatcher<TValue, TSelected>(
fn,
initialOptions,
selector): SolidBatcher<TValue, TSelected>
Definiert in: batcher/createBatcher.ts:100
Erstellt eine Solid-kompatible Batcher-Instanz zur Verwaltung von Elementstapeln und gibt Solid-Signale für alle zustandsbehafteten Eigenschaften aus.
Merkmale
Der Batcher sammelt Elemente und verarbeitet sie in Stapeln basierend auf
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
Beispielanwendung
// Default behavior - no reactive state subscriptions
const batcher = createBatcher(
(items) => {
// Process batch of items
console.log('Processing batch:', items);
},
{
maxSize: 5,
wait: 2000,
onExecute: (batcher) => console.log('Batch executed'),
getShouldExecute: (items) => items.length >= 3
}
);
// Opt-in to re-render when items or isRunning changes (optimized for UI updates)
const batcher = createBatcher(
(items) => console.log('Processing batch:', items),
{ maxSize: 5, wait: 2000 },
(state) => ({ items: state.items, isRunning: state.isRunning })
);
// Opt-in to re-render when execution metrics change (optimized for tracking progress)
const batcher = createBatcher(
(items) => console.log('Processing batch:', items),
{ maxSize: 5, wait: 2000 },
(state) => ({
executionCount: state.executionCount,
totalItemsProcessed: state.totalItemsProcessed
})
);
// Add items to batch
batcher.addItem('task1');
batcher.addItem('task2');
// Control the batcher
batcher.stop(); // Pause processing
batcher.start(); // Resume processing
// Access the selected state (will be empty object {} unless selector provided)
const { items, isRunning } = batcher.state();
// Default behavior - no reactive state subscriptions
const batcher = createBatcher(
(items) => {
// Process batch of items
console.log('Processing batch:', items);
},
{
maxSize: 5,
wait: 2000,
onExecute: (batcher) => console.log('Batch executed'),
getShouldExecute: (items) => items.length >= 3
}
);
// Opt-in to re-render when items or isRunning changes (optimized for UI updates)
const batcher = createBatcher(
(items) => console.log('Processing batch:', items),
{ maxSize: 5, wait: 2000 },
(state) => ({ items: state.items, isRunning: state.isRunning })
);
// Opt-in to re-render when execution metrics change (optimized for tracking progress)
const batcher = createBatcher(
(items) => console.log('Processing batch:', items),
{ maxSize: 5, wait: 2000 },
(state) => ({
executionCount: state.executionCount,
totalItemsProcessed: state.totalItemsProcessed
})
);
// Add items to batch
batcher.addItem('task1');
batcher.addItem('task2');
// Control the batcher
batcher.stop(); // Pause processing
batcher.start(); // Resume processing
// Access the selected state (will be empty object {} unless selector provided)
const { items, isRunning } = batcher.state();
• TValue
• TSelected = {}
(items) => void
BatcherOptions<TValue> = {}
(state) => TSelected
SolidBatcher<TValue, TSelected>
Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.