@mosowe2/ui:【InventedList】虚拟列表

虚拟滚动列表,每一项的高度时根据第一项定的 attr

属性 说明 类型 listData 数据列表 array instance 父级容器,没有默认时window,值为元素ref

event

事件 说明 onScrollBottom 滚动到底部事件

slot

事件 说明 default 默认插槽,scope为当前项数据

使用方法

安装

npm i @mosowe2/ui

配置

main.js配置,因为是依赖@vue/composition-api,所以这个也是要安装和配置的

import Vue from vue;
import VueCompositionApi from @vue/composition-api;
import App from ./App.vue;
import router from ./router;
import mosoweUI from @mosowe2/ui  // 引入


Vue.config.productionTip = false;
Vue.config.silent = true;
Vue.use(VueCompositionApi);
Vue.use(mosoweUI) // 配置

new Vue({
          
   
  router,
  render: (h) => h(App),
}).$mount(#app);
使用

.vue文件中直接使用

<div class="test">
    <div
      ref="InventedList"
      style="
        width: 500px;
        height: 300px;
        overflow-y: scroll;
        margin-bottom: 100px;
      "
    >
      <inventedList :listData="listData" :instance="InventedList" row-key="id">
        <template #default="{ listItem }">
          <div class="item" style="height: 50px">{
         
  { listItem }}</div>
        </template>
      </inventedList>
    </div>
  </div>
</template>
<script>
import { defineComponent, ref } from "@vue/composition-api";
export default defineComponent({
  components: {},
  setup() {
    // 虚拟列表
    const InventedList = ref(null);
    const createList = () => {
      const list = [];
      for (let i = 0; i < 100; i++) {
        list.push({
          name: "test",
          id: i,
        });
      }
      return list;
    };
    const listData = ref(createList());

    return {
      InventedList,
      listData,
    };
  },
});
</script>

经验分享 程序员 微信小程序 职场和发展