# @hurraey/interval-virtualizer 中文文档

规范地址：https://npmcn.com/package/%40hurraey/interval-virtualizer/

版本：0\.1\.0
npm 元数据更新时间：2026-11-01T07:12:52.972Z
中文译文更新时间：2026-11-01T09:00:08.307Z
软件包许可：MIT

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40hurraey/interval-virtualizer
原文对照：https://npmcn.com/package/%40hurraey/interval-virtualizer/?lang=original
项目主页：https://github.com/HURRAEY/interval-virtualizer#readme
源码仓库：https://github.com/HURRAEY/interval-virtualizer

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：54.9 kB，15 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：0 个
- peer 依赖：react ^18\.2\.0 \|\| ^19\.0\.0
- 首次发布：2026-11-01T07:12:17.524Z
- 最新版本发布：2026-11-01T07:12:52.788Z
- 已发布版本数：2（近 12 个月 2 个）

## 中文简介

숫자구간의겹침조회와청크기반화면범위계산을제공하는打印稿라이브러리

## 安装

```sh
npm install @hurraey/interval-virtualizer
```

也可以使用：`pnpm add @hurraey/interval-virtualizer`、`yarn add @hurraey/interval-virtualizer`、`bun add @hurraey/interval-virtualizer`

## README

# 区间仿真器

숫자축위의구간데이터에서화면과겹치는항목을찾는打印稿라이브러리입니다。오디오·비디오타임라인,일정,문자범위처럼시작·종료좌표가있는데이터에사용할수있습니다。

■■■■■■■■■■■■■■■■■■■■■■React 18·19变身变身훅变身变身变身变身变身变身变身变身变身变身变身变身变身变身

## 설치

node . js 20이상을지원하며ESM과CommonJS,打印稿타입을제공합니다。

```sh
npm install @hurraey/interval-virtualizer
```

反应훅을사용할때는애플리케이션에反应18.2이상또는反应19가필요합니다。API、API、React、聚合、聚合、聚合、聚合、聚合。

## 【译文】

```ts
import { createIntervalIndex, queryIntervals } from '@hurraey/interval-virtualizer';

const clips = [
  { id: 'background', start: 0, end: 100 },
  { id: 'effect', start: 75, end: 78 },
  { id: 'later', start: 110, end: 120 },
];

const index = createIntervalIndex(clips);
const result = queryIntervals(index, { start: 70, end: 80 });

console.log(result.intervals.map((clip) => clip.id));
// ['background', 'effect']
```

-   大数据：大数据：大数据：大数据(1)、(2)、(3)、(3)、(3)。
-   ■■■■■■■■■■■■■■■■■■■■■■■■■■■■萤光萤光 `start <= range.end && end >= range.start`\[qh\]
-   ■■■■■■■■■■■■■\[qh\] \[qh\] \[qh\]
-   \[qh\] \[qh\]\[qh `end < start`大数据：大数据：大数据：大数据：大数据
-   捶打，捶打，捶打 `inspectedIntervalCount: 0`无。

大数据：大数据：大数据：大数据：大数据■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■스크롤과줌만바뀌면같은인덱스를재사용합니다。

### 【翻译

大数据：大数据：大数据：大数据：大数据：大数据：大数据각하위구간의최대종료좌표를저장한세그먼트트리를따라가며,화면전에모두끝난구간은건너뜁니다。

大黄蜂：大黄蜂：大黄蜂：大黄蜂：大黄蜂：大黄蜂：大黄蜂：大黄蜂■■■■■■■■■■■■■■■■■■■■■■ `O(log N)`에끝나는것은아닙니다。

`inspectedIntervalCount`大数据：大数据：大数据：大数据：大数据\[qh\] \[qh\] \[qh\] \[qh\] \[qh\]

## ■■■■

```ts
import { getVirtualViewportRange } from '@hurraey/interval-virtualizer';

const range = getVirtualViewportRange({
  offset: 4_100,
  viewportSize: 800,
  contentSize: 10_000,
  chunkSize: 1_000,
  overscanChunks: 2,
  padding: 8,
});

console.log(range);
// { start: 1992, end: 7008 }
```

`offset`\[qh `viewportSize`와 `contentSize`\[qh\] \[qh\] \[qh\] `chunkSize`【翻译】같은청크안에서는작은스크롤변화에도같은범위를반환할수있습니다。

`overscanChunks`\[qh\] \[qh\] \[qh\] \[qh\]\[qh\] `padding`■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

【翻译】■■■■■■■■■■■■■■■■■■■ `null`无。

픽셀범위를초단위인덱스에조회하려면두경계를초당픽셀수로나눠사용합니다。

## 反应吧！

`@hurraey/interval-virtualizer/react`의 `useVirtualViewportRange`\[qh\] \[qh\]【中文】：냅Next.js大黄蜂大黄蜂大黄蜂大黄蜂大黄蜂。

```tsx
import { useCallback, useRef } from 'react';
import { useVirtualViewportRange } from '@hurraey/interval-virtualizer/react';

export function ScrollRange() {
  const offsetRef = useRef(0);
  const listenersRef = useRef(new Set<() => void>());
  const subscribe = useCallback((listener: () => void) => {
    listenersRef.current.add(listener);
    return () => {
      listenersRef.current.delete(listener);
    };
  }, []);

  const range = useVirtualViewportRange({
    offsetRef,
    subscribe,
    viewportSize: 800,
    contentSize: 10_000,
    chunkSize: 1_000,
    overscanChunks: 1,
  });

  return (
    <div
      style={{ width: 800, overflowX: 'auto' }}
      onScroll={(event) => {
        offsetRef.current = event.currentTarget.scrollLeft;
        listenersRef.current.forEach((listener) => listener());
      }}
    >
      <div style={{ width: 10_000 }}>{range ? `${range.start} ~ ${range.end}` : '화면 크기 측정 전'}</div>
    </div>
  );
}
```

\[qh\] \[qh\] \[qh\] \[qh\] \[qh\] \[qh\] \[qh\] `subscribe`【翻译】：【翻译】훅은계산된범위가같으면같은스냅샷객체를반환하며,언마운트할때구독을해제합니다。

Dom \[k\], \[k\], \[k\], \[k\] `requestAnimationFrame` ■■■■■■■■■■■■■■■■■■■【中文翻译】：大黄蜂，大黄蜂，大黄蜂，大黄蜂，大黄蜂。

## API

-   `createIntervalIndex<T extends Interval>(intervals)` ——구간인덱스를생성합니다。
-   `queryIntervals(index, range)` - `{ intervals, inspectedIntervalCount }`2015-10-16 16:517:20
-   `getVirtualViewportRange(options)` - `{ start, end }` 또는 `null`无。
-   `useVirtualViewportRange(options)` - React。 `/react`\[qh\]

\[qh `Interval`， `IntervalIndex`， `IntervalQueryRange`， `IntervalQueryResult`， `VirtualViewportOptions` \[qh\] `/react`는 `VirtualViewportSubscriptionOptions` \[qh\]

## 【翻译

大数据：大数据：大数据

```sh
npm ci
npm run check
```

구간조회·화면범위·反应구독테스트,타입검사,ESM·CommonJS빌드와실제패키지설치검증을실행합니다。【中文】：大黄蜂，大黄蜂，大黄蜂。

## \[qh\]

[麻省理工学院](https://npmcn.com/package/%40hurraey/interval-virtualizer/LICENSE)

## 常见问题

### @hurraey/interval-virtualizer 是什么？

숫자구간의겹침조회와청크기반화면범위계산을제공하는打印稿라이브러리

### 如何安装 @hurraey/interval-virtualizer？

在项目目录运行 npm install @hurraey/interval-virtualizer，或使用 pnpm add / yarn add / bun add。

### @hurraey/interval-virtualizer 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @hurraey/interval-virtualizer 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @hurraey/interval-virtualizer 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=20。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @hurraey/interval-virtualizer 可以商用吗？

@hurraey/interval-virtualizer 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @hurraey/interval-virtualizer 还在维护吗？

最新版本 0\.1\.0 发布于 2026/11/01（2 天前）；至今共发布 2 个版本，其中过去 12 个月发布了 2 个；首次发布于 2026/11/01。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

