欢迎关注我的公众号:夜说猫,让一个贫穷的程序员不靠打代码也能吃饭~

element plus官网中,Infinite Scroll示例使用的是数字,在实际项目运用中,我们更多的是使用json数组进行渲染,所以我们改写v-infinite-scroll属性的load方法。
1、在加载页面的时候,element plus会根据容器的高度,自动调用v-infinite-scroll后面的方法,让数据自动填充整个容器。
所以你会发现,自己明明只默认两个或三个数据,但是数据总是填满了容器,出现了更多个数据。
2、要使用ref()方法赋值,成为一个响应式的变量,对这个变量进行修改节点才会响应变化。
如果没有使用ref()方法,数据不会实时监听。
以上两点,在官网都没有提到,至少在这个组件的介绍的页面没有提到。
是初学者容易遇到的坑。
- <template>
- <ul v-infinite-scroll="load" infinite-scroll-disabled="false" infinite-scroll-distance="1" class="infinite-list" style="overflow: auto">
- <!--<li v-for="i in count" :key="i" class="infinite-list-item">{{ i }}</li>-->
- <li v-for="item in list" :key="item.id" class="infinite-list-item">
- {{ item.id }}{{ item.title }}
- </li>
- </ul>
- </template>
-
-
- <script lang="ts" setup>
- import { ref } from 'vue'
-
- //瀑布流
- //import { ref } from 'vue'
- //const count = ref(0)
- const list=ref([]);
- const load = () => {
- //count.value += 2
- //如果是异步请求,只需把异步请求得到的数据赋值给items即可
- var items=[
- {id:1,title:'华为竟然突破封锁发布高端手机'},
- {id:2,title:'一大批程序员在夜说猫公众号发牢骚?'},
- {id:3,title:'东南亚高薪工作,竟然是诈骗'},
- {id:4,title:'房价下跌,年轻人买房的机会来了吗'},
- {id:5,title:'为什么现在的武打戏越来越不好看了?'}];
- list.value=list.value.concat(items);
- }
-
- </script>
-
- <style>
- .infinite-list {
- height: 300px;
- padding: 0;
- margin: 0;
- list-style: none;
- }
- .infinite-list .infinite-list-item {
- display: flex;
- align-items: center;
- justify-content: center;
- height: 50px;
- background: var(--el-color-primary-light-9);
- margin: 10px;
- color: var(--el-color-primary);
- }
- .infinite-list .infinite-list-item + .list-item {
- margin-top: 10px;
- }
- </style>
-

欢迎关注我的公众号【夜说猫】,一个程序员偶尔发牢骚的公众号。
