vue3 中 v-show 分页问题

5 天前
 zhuoyue100

const pagination = reactive({ page: 1, total: 9, page_size: 3 }) const showChart = computed(() => (i: number) => { let offset = (pagination.page-1)*pagination.page_size console.log(i, i > offset && i <= offset+pagination.page_size) return i > offset && i <= offset+pagination.page_size })

首次展示正确,点击分页按钮后不切换,这个怎么实现?

966 次点击
所在节点    Vue.js
4 条回复
doco
5 天前
showChart 如果是绑定到图表上控制显隐的话直接改成方法, 不要用 computed
```
function showChart(index: number) {
...
}
```
zhuoyue100
5 天前
就是页面有 9 个元素,每次显示 3 个,用的 element plus 分页插件,分页时控制元素的显示隐藏,我上面写的没效果
dingjs
5 天前
把计算属性去掉就行了,这个返回函数多此一举,猜测应该是 computed 返回的函数未立即执行,没能收集到依赖,在分页变化后不会更新对应的函数。

分页场景下更合理的是用 计算属性 + 数组 slice 直接返回应该展示的数据,而不是用 v-show 。

typescript```
// 第一种改法
const showChart = (i: number) => {
let offset = (pagination.page - 1) * pagination.page_size;

return i > offset && i <= offset + pagination.page_size;
};
```
zhuoyue100
5 天前
@dingjs 按照你的方法可以了,感谢~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1101229

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX