框架
版本
Debouncer API 参考
Throttler API 参考
速率限制器 API 参考
队列 API 参考
批处理器 API 参考
批处理器示例

useQueuer

函数:useQueuer()

ts
function useQueuer<TValue>(fn, options): Queuer<TValue>
function useQueuer<TValue>(fn, options): Queuer<TValue>

定义于:react-pacer/src/queuer/useQueuer.ts:44

一个 React 钩子,用于创建和管理 Queuer 实例。

这是一个较低级别的钩子,可直接访问 Queuer 的功能,而无需 任何内置的状态管理。这使您可以将其与任何您喜欢的状态管理解决方案 (useState、Redux、Zustand 等)集成,方法是利用 onItemsChange 回调。

有关具有内置状态管理的钩子,请参阅 useQueuedState。

Queuer 扩展了基本 Queue 以添加处理功能。项目按顺序同步处理, 每个项目处理之间可以有可选的延迟。队列器包含一个可以启动和停止的内部滴答机制, 使其可用作调度程序。启动后,它将在每个滴答处理一个项目, 滴答之间可以有可选的等待时间。

默认情况下使用 FIFO(先进先出)行为,但可以通过在添加项目时指定“front”位置来配置为 LIFO(后进先出)。

类型参数

TValue

参数

fn

(item) => void

options

QueuerOptions<TValue> = {}

返回

Queuer<TValue>

示例

tsx
// 自定义状态管理和调度示例
const [items, setItems] = useState([]);

const queue = useQueuer({
  started: true, // 立即开始处理
  wait: 1000,    // 每秒处理一个项目
  onItemsChange: (queue) => setItems(queue.peekAllItems()),
  getPriority: (item) => item.priority // 优先处理优先级较高的项目
});

// 添加要处理的项目 - 它们将被自动处理
queue.addItem('task1');
queue.addItem('task2');

// 控制调度程序
queue.stop();  // 暂停处理
queue.start(); // 恢复处理
// 自定义状态管理和调度示例
const [items, setItems] = useState([]);

const queue = useQueuer({
  started: true, // 立即开始处理
  wait: 1000,    // 每秒处理一个项目
  onItemsChange: (queue) => setItems(queue.peekAllItems()),
  getPriority: (item) => item.priority // 优先处理优先级较高的项目
});

// 添加要处理的项目 - 它们将被自动处理
queue.addItem('task1');
queue.addItem('task2');

// 控制调度程序
queue.stop();  // 暂停处理
queue.start(); // 恢复处理