**摸鱼神器:滚动条的无限滚动**
2024-02-13 11:11:57
摸鱼的新发现,滚动条无限滚动
在一次调试的过程中,我按下了 F12 刚好是掘金的页面,然后把代码输入到控制台之后,顺手滚动了几下右侧的滚动条,发现个问题如下图所示:掘金官网的滚动条当你拖动到底部的时候会自动回弹到一定的位置。
顺着这个问题,我想着使用 vue-cli3.0 和 TS 实现一个滚动条无限滚动的效果,就是当我滚动到页面底部的时候会自动加载更多内容,无需手动点击加载更多按钮。
实现起来很简单,首先使用 Vue-cli3.0 创建一个新的项目,然后安装 vue-router 和 axios 作为依赖项。在 main.js 文件中配置路由,并创建一个名为 Home 的组件。在 Home 组件中,使用 axios 请求数据,并将数据绑定到 Vue 实例。
<template>
<div id="app">
<ul>
<li v-for="item in list" :key="item.id">{{ item.name }}</li>
</ul>
<button @click="loadMore">加载更多</button>
</div>
</template>
<script>
import axios from 'axios'
export default {
data() {
return {
list: [],
page: 1,
isLoading: false
}
},
methods: {
loadMore() {
this.isLoading = true
axios.get('https://jsonplaceholder.typicode.com/users?_page=' + this.page)
.then(response => {
this.list = this.list.concat(response.data)
this.page++
this.isLoading = false
})
}
},
created() {
this.loadMore()
}
}
</script>
在 Home 组件中,我们定义了一个 list 数据,用于存储从服务器加载的数据。还定义了一个 page 数据,用于记录当前加载的页数。还有一个 isLoading 数据,用于表示当前是否正在加载数据。
在 loadMore 方法中,我们首先将 isLoading 设为 true,表示开始加载数据。然后使用 axios 发起一个 GET 请求,请求的 URL 是 https://jsonplaceholder.typicode.com/users?_page=1,其中 1 是当前加载的页数。
请求成功后,我们将响应的数据添加到 list 数据中,并将 page 数据加 1,表示加载了下一页数据。最后将 isLoading 设为 false,表示数据加载完成。
在 created 生命周期钩子中,我们调用 loadMore 方法,开始加载第一页数据。
至此,我们就实现了滚动条无限滚动的功能。当用户滚动到页面底部时,loadMore 方法会自动触发,加载更多数据。
希望本篇文章对您有所帮助。如果您有任何问题,欢迎随时与我联系。