分页加载:将数据分成多个页面,每次只加载当前页面的数据,减少一次性加载大量数据的时间和资源消耗怎么写
时间: 2024-03-16 19:44:39 浏览: 116
在vue中实现分页加载数据,可以参考以下的步骤:
1. 在后台接口中添加分页参数,例如page和pageSize,用来指定当前页和每页显示的数据条数。
2. 在前端页面中,添加一个分页组件,用来显示分页信息和提供翻页功能。
3. 在vue组件中,定义一个data变量用来存储当前页的数据和分页信息,例如:
```
data() {
return {
currentPage: 1, // 当前页码
pageSize: 10, // 每页显示的数据条数
total: 0, // 总数据条数
dataList: [], // 当前页的数据列表
}
}
```
4. 在vue组件的created或mounted钩子函数中,调用后台接口获取第一页数据:
```
created() {
this.loadData(1);
},
methods: {
loadData(page) {
// 调用后台接口获取当前页数据
axios.get('/api/data', {
params: {
page: page,
pageSize: this.pageSize,
}
}).then(response => {
// 更新dataList和分页信息
this.dataList = response.data.list;
this.total = response.data.total;
this.currentPage = page;
}).catch(error => {
console.log(error);
});
},
},
```
5. 在分页组件中,添加翻页的事件处理函数:
```
<template>
<div>
<button v-if="currentPage > 1" @click="loadData(currentPage - 1)">上一页</button>
<button v-if="currentPage < totalPage" @click="loadData(currentPage + 1)">下一页</button>
<span>第{{currentPage}}页 / 共{{totalPage}}页</span>
</div>
</template>
<script>
export default {
props: {
currentPage: Number,
pageSize: Number,
total: Number,
},
computed: {
totalPage() {
return Math.ceil(this.total / this.pageSize);
},
},
methods: {
loadData(page) {
this.$emit('loadData', page);
},
},
};
</script>
```
6. 在vue组件中,将分页组件添加到页面中,并监听分页组件的loadData事件:
```
<template>
<div>
<ul>
<li v-for="item in dataList">{{item}}</li>
</ul>
<pagination :currentPage="currentPage" :pageSize="pageSize" :total="total" @loadData="loadData"></pagination>
</div>
</template>
<script>
import Pagination from './components/Pagination.vue';
export default {
components: {
Pagination,
},
data() {
return {
currentPage: 1,
pageSize: 10,
total: 0,
dataList: [],
}
},
created() {
this.loadData(1);
},
methods: {
loadData(page) {
axios.get('/api/data', {
params: {
page: page,
pageSize: this.pageSize,
}
}).then(response => {
this.dataList = response.data.list;
this.total = response.data.total;
this.currentPage = page;
}).catch(error => {
console.log(error);
});
},
},
};
</script>
```
这样,就可以在vue中实现分页加载数据了,每次只加载当前页的数据,减少一次性加载大量数据的时间和资源消耗。
阅读全文