删除页面最后一条数据时,分页组件current没有减一,传入后端page也没减一导致查询页面列表为空
来源:6-10 增加删除电子书功能

geniusmorn
2021-04-23
老师怎么解决这个问题的?
写回答
4回答
-
删除后, 我们是刷新当前页,可以改成从第1页开始查。
还有一种,在删除之前,判断,如果list.length=1,只有一条数据,那么刷新时,current-1
012021-04-25 -
weixin_慕仙5029974
2022-08-06
/** * 删除 */ const handleDelete = (id: number) => { axios.delete("/ebook/delete/" + id).then((response) => { const data = response.data; // data = commonResp if (data.success) { // 判断删除后当前页面是否还有数据 if (ebooks.value.length === 1){ pagination.value.current--; } // 重新加载列表 handleQuery({ page: pagination.value.current, size: pagination.value.pageSize, }); } }); };
00 -
weixin_慕仙5029974
2022-08-05
/** * 删除 */ const handleDelete = (id: number) => { axios.delete("/ebook/delete/" + id).then((response) => { const data = response.data; // data = commonResp if (data.success) { // 判断删除后当前页面是否还有数据 if (data.content == null){ pagination.value.current--; } // 重新加载列表 handleQuery({ page: pagination.value.current, size: pagination.value.pageSize, }); } }); };
012022-08-06 -
geniusmorn
提问者
2021-04-25
// 删除 const del = (id : number) => { // 定义公共变量 let listLength = -1; // 删除前先去查当前页还有几条数据 let myPromise = new Promise((resolve => { axios.get("/album/list", { params: { page: pagination.value.current, size: pagination.value.pageSize } }).then((response) => { const data = response.data; if(data.success){ listLength = data.content.list.length; resolve("list已执行"); //successMessage } }); })) // 如果拿到查询数据,再去删除,否则listLength还是-1 myPromise.then((successMessage) =>{ axios.delete("/album/delete/" + id).then(response => { if (response.data.success){ console.log("list已执行", successMessage); console.log(listLength); // 删除成功后重置page, 再去刷新列表 const current = pagination.value.current; const page = (listLength == 1) ? current - 1 : current; // 刷新列表 handleQuery({ page: page, size: pagination.value.pageSize }); } }) }) };
我按照老师的思路,把删除函数修改了一下,用到了promise,可以解决这个BUG
如果有同学有更好更简洁的解决方案也欢迎指正和分享。
032022-12-10
相似问题
6-4 疑问
回答 2
电子书列表显示分类名称为空
回答 1