wodax-react-virtuoso-ex
TypeScript icon, indicating that this package has built-in type declarations

1.2.3-pre.1 • Public • Published

npm version

基于 react-virtuoso, 做了部分扩展及性能提升。

在线Demo: virtuoso.dev

变更说明

定义变更

export type TScrollingInfo = {
  isScrolling: boolean,
  scrollingTop: number
}
 
export type TDefaultPosInfo = {
  top: number                        // scrollTop 值
  left: number                       // scrollLeft 值
  index: number                      // 指定索引位置的item渲染
  maybeRenderItemCount: number       // 要渲染展示的item数量
}
 
export interface VirtuosoProps {
  totalCount: number
  overscan?: number
  topItems?: number
  footer?: () => ReactElement
  item: (index: number) => ReactElement
  computeItemKey?: (index: number) => number
  itemHeight?: number
  startReached?: ({touchMoveDistance, scrollTop}:{touchMoveDistance: number, scrollTop:number}) => void // 新增下拉检测
  endReached?: (index: number) => void
  scrollEventChange?: (e: Event) => void  // 新增
  scrollingStateChange?: (info: TScrollingInfo) => void // 变更
  quickScrollingStateChange?: (isRunning: boolean) => void // 新增
  itemsRendered?: TSubscriber<ListItem[]>
  itemsLastRendered?: TSubscriber<ListItem[]> // 新增
  totalListHeightChanged?: TSubscriber<number>
  style?: CSSProperties
  className?: string
  initialItemCount?: number
  initialScrollToPos?: TDefaultPosInfo // 新增
  ScrollContainer?: TScrollContainer
  FooterContainer?: TFooterContainer
  ListContainer?: TListContainer
  ItemContainer?: TItemContainer
}

参见:https://virtuoso.dev/virtuoso-api-reference/

接口函数:scrollToIndex

interface TScrollLocationWithAlign {
  index: number
  align: 'start' | 'center' | 'end'
}
export type TScrollLocation = number | TScrollLocationWithAlign
 
// 滑动/滚动到索引项
function scrollToIndex(location: TScrollLocation);

接口函数:scrollToPos

type ScrollBehavior = "auto" | "smooth";
interface ScrollOptions {
    behavior?: ScrollBehavior;
}
 
interface ScrollToOptions extends ScrollOptions {
    left?: number;
    top?: number;
}
 
// 滑动/滚动到坐标
function scrollToPos(location: ScrollToOptions)
注意使用scrollToPos会根据behavior的行为来处理滑动及滚动的效果处理完成后恢复初始的style状态

性能提升

  • 区分ScrollTo与普通的Scroll监听,提高渲染速度
  • 优化事件传递,提高部分核心监听对象的处理能力
  • 优化滑动效果为smooth值的行为

作者

sunzhifeng @sunzhifeng

版权

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i wodax-react-virtuoso-ex

Homepage

virtuoso.dev

Weekly Downloads

0

Version

1.2.3-pre.1

License

MIT

Unpacked Size

668 kB

Total Files

29

Last publish

Collaborators

  • sunzhifeng