首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Vuejs中使用虚拟滚动列表?

如何在Vuejs中使用虚拟滚动列表?
EN

Stack Overflow用户
提问于 2021-12-03 07:48:46
回答 1查看 984关注 0票数 4

代码语言:javascript
复制
< script >
  export default {
    name: 'App',
    data() {
      return {
        items: [{
            price: '1',
            name: 'mm'
          },
          {
            price: '22',
            name: 'aa'
          },
          {
            price: '55',
            name: 'dd'
          },
          {
            price: '77',
            name: 'gg'
          },
          {
            price: '123',
            name: 'kk'
          },
          {
            price: '53',
            name: 'mn'
          },
          {
            price: '11',
            name: 'mm'
          },
          {
            price: '22',
            name: 'a'
          },
          {
            price: '33',
            name: 'd'
          },
          {
            price: '77',
            name: 'g'
          },
          {
            price: '1283',
            name: 'k'
          },
          {
            price: '589',
            name: 'n'
          }
        ]
      }
    }
  } <
  /script>
代码语言:javascript
复制
<template>
  <div id="app">
    <div class="wrapper">
      <virtual-list
        class="list"
        style="height: 360px; overflow-y: auto"
        :data-key="'item'"
        :data-sources="item"
        :data-component="item"
        :estimate-size="3"
      />
      <div class="item" v-for="item in items" :key="item">
        <div class="id">{{ item.price }} {{ item.name }}</div>
      </div>
    </div>
  </div>
</template>

我试图在vuejs中实现虚拟滚动,我也可以在ui中呈现列表,但无法在虚拟滚动中呈现它们。如图像所示。

我试图在vuejs中实现虚拟滚动,我也可以在ui中呈现列表,但无法在虚拟滚动中呈现它们。如图像所示。

尝试安装:- npm安装vue-虚拟-滚动列表-保存

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-03 08:40:38

您应该为data-component支柱创建vue组件,如下所示:

Item.vue

代码语言:javascript
复制
<template>
  <div class="item">
    <span>{{ index }} - {{ source.name }}</span>
  </div>
</template>

<script>
export default {
  props: {
    index: {
      type: Number,
      default: 0
    },
    source: {
      type: Object,
      default() {
        return {}
      }
    }
  }
}
</script>

<style  lang="scss" scoped>
.item {
  border-bottom: 1px solid gray;
}
</style>

然后在virtual-list中使用

App.vue

代码语言:javascript
复制
<template>
  <div id="app">
    <div class="wrapper">
      <virtual-list
        class="list"
        style="height: 360px; overflow-y: auto"
        data-key="key"
        :keeps="20"
        :data-sources="computedItems"
        :data-component="Item"
      />
    </div>
  </div>
</template>

<script>
import Item from './Item'
export default {
  name: 'App',
  data() {
    return {
      Item,
      items: [
        { price: '1', name: 'mm' },
        { price: '22', name: 'aa' },
        { price: '55', name: 'dd' },
        { price: '77', name: 'gg' },
        { price: '123', name: 'kk' },
        { price: '53', name: 'mn' },
        { price: '11', name: 'mm' },
        { price: '22', name: 'a' },
        { price: '33', name: 'd' },
        { price: '77', name: 'g' },
        { price: '1283', name: 'k' },
        { price: '589', name: 'n' }
      ]
    }
  },
  computed: {
    computedItems() {
      return this.items.map((item, index) => {
        item.key = `item_${index}`
        return item
      })
    }
  }
}
</script>

如果您没有每个项的唯一键,请创建一个计算方法,以便在示例中添加它。

这是代码

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70211021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档