区间仿真器
숫자축위의구간데이터에서화면과겹치는항목을찾는打印稿라이브러리입니다。오디오·비디오타임라인,일정,문자범위처럼시작·종료좌표가있는데이터에사용할수있습니다。
■■■■■■■■■■■■■■■■■■■■■■React 18·19变身变身훅变身变身变身变身变身变身变身变身变身变身变身变身变身变身
설치
node . js 20이상을지원하며ESM과CommonJS,打印稿타입을제공합니다。
npm install @hurraey/interval-virtualizer
反应훅을사용할때는애플리케이션에反应18.2이상또는反应19가필요합니다。API、API、React、聚合、聚合、聚合、聚合、聚合。
【译文】
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]
■■■■
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大黄蜂大黄蜂大黄蜂大黄蜂大黄蜂。
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:20getVirtualViewportRange(options)-{ start, end }또는null无。useVirtualViewportRange(options)- React。/react[qh]
[qh Interval, IntervalIndex, IntervalQueryRange, IntervalQueryResult, VirtualViewportOptions [qh] /react는 VirtualViewportSubscriptionOptions [qh]
【翻译
大数据:大数据:大数据
npm ci
npm run check
구간조회·화면범위·反应구독테스트,타입검사,ESM·CommonJS빌드와실제패키지설치검증을실행합니다。【中文】:大黄蜂,大黄蜂,大黄蜂。