在Vue3中使用vue-virtual-scroll-list插件,可以按照以下步骤进行操作: 1. 安装 vue-virtual-scroll-list 插件 首先,你需要在你的Vue3项目中安装vue-virtual-scroll-list插件。你可以使用npm或yarn来安装: bash npm install vue-virtual-scroll-list --save # 或者 yarn add vue-virtual-scroll-list 2. 在 Vu...
export default { name: 'VirtualList', props: { // 定义你的 props,如列表数据等 }, setup(props) { const scrollContainer = ref(null); const visibleItems = computed(() => { // 根据滚动位置和容器高度计算可见项 }); const handleScroll = () => { // 处理滚动事件,更新可见项等 }; onMo...
安装的话这个插件有2个版本的,一个是1版本,目前更新到2版本了,二版本功能更加的强大。这里使用了1版本,通俗易懂一点。 npm install --save vue-virtual-scroll-list@1.1.3 1. 使用 在单页面中导入 import VirtualList from "vue-virtual-scroll-list"; 1. components: { VirtualList,//注册组件 }, 1. 2...
showItemList循环可视区域内的数据+缓存区的数据 <template> <list-item v-for="(item,index) in showItemList" :key="item.dataIndex+index" :index="item.dataIndex" :data="item.data" :style="item.style" @onSizeChange="sizeChangeHandle"> <template #slot-scope="slotProps"> <slot name="slo...
这个插件就是vue中的一个长列表的插件,官网地址: https://tangbc.github.io/vue-virtual-scroll-list/#/ 来看一下该组件的渲染情况: 可以明显看出,其渲染的时候,DOM节点数量都是固定的,并不会将所有的内容全部加载出来 6、自己实现vue虚拟列表 ① vue2 Ⅰ. 项目搭建 建一个新的文件夹,在这个文件夹中创建...
下面是vue3的写法 如果想查看vue2的写法 请移步至github链接 https://github.com/Arvin-Cui/vue-virtual-scroll/blob/master/pages/index/index.vue 1.index.vueindex.vue页面中加一个共用组件VirtualList.vue <template> <view> <VirtualList :listData="state.dateList" :itemSize="100"></VirtualList> ...
为了在Vue3代码中实现虚拟滚动,开发者可以选择编写自己的虚拟滚动逻辑或使用现有的库,如vue-virtual-scroller。在接下来的内容中,将提供如何从头开始实现虚拟滚动,以揭示背后的原理,并剖析关键的实现步骤。 一、虚拟滚动原理 虚拟滚动的核心概念围绕着只加载用户可视区域内的项目。这意味着,不管列表有多长,只有一小部分...
很简单,使用translate将列表向下偏移一个item的高度就行,也就是100px。列表偏移后就是下面这样的了: 如果当前scrollTop的值为200,那么偏移值就是200px。所以我们得出 代码语言:javascript 代码运行次数:0 运行 AI代码解释 offset.value=scrollTop-(scrollTop%itemSize); ...
{ itemData.id }} - {{ itemData.text }} </template> </VirtList> </template> import { VirtList } from 'yt-virtual-scroll-list-vue3'; export default { components: { VirtList }, data() { return { list: [{ id: 0, text: 'text' }], }; }, }; Composition API <template>...
</scroll-view> <view class="taskList" v-if="state.isShow"> <VirtualList :dateIndex="dateIndex" :listData="dateList" :itemSize="88"></VirtualList> </view> <view class="nodate" v-if="!state.isShow"> <view class="nodate_text"> <text class="name">暂无健康任务</text> </view...