虚拟列表 Virtual List
虚拟列表,常用于渲染数据量非常大的列表,通过渲染当前的可视区域,区域外的内容在用户滚动到可视区域内之后再渲染,以保障页面的流畅。
使用
API安装使用
import { TiVirtualList } from '@titian-design/mobile-react';
用法示例
基本用法
const App: React.FC = () => {
const virtualListRef = useRef<HTMLTiVirtualListElement>(null);
const [data, setData] = useState<number[]>([]);
useEffect(() => {
virtualListRef.current?.setListData(data);
}, [data.length]);
useEffect(() => {
virtualListRef.current?.setRenderItem(item => `<div style="height: 50px; width: 100%;">${item}</div>`);
}, []);
const handle = useCallback(() => {
setData(prev =>
prev.concat(
Array(10)
.fill(0)
.map((_, idx) => (data[data.length - 1] || 0) + idx + 1),
),
);
}, []);
return <TiVirtualList ref={virtualListRef} onLoad={handle} />;
}
TiVirtualList API
属性 Properties
名称 | 类型 | 必填 | 默认值 | 说明 | 备注 |
---|---|---|---|---|---|
containerHeight | number | 否 | 当前 document 高度 | 容器高度 | - |
itemHeight | number | 否 | 50 | 节点高度 | - |
extStyle | string | 否 | - | 根节点样式 | - |
事件 Events
名称 | 参数列表 | 描述 | 备注 |
---|---|---|---|
onLoad | (e: CustomEvent<never>) => void | 滚动到底部时触发 | - |
CSS 变量 CSS Variables
变量 | 默认值 | 说明 | 备注 |
---|---|---|---|
--virtual-list-width | 100% | 虚拟列表宽度 | - |
--virtual-list-background-color | #fff | 虚拟列表背景色 | - |