V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhuoyue100
V2EX  ›  Vue.js

vue3 中 v-show 分页问题

  •  
  •   zhuoyue100 · 3 天前 · 884 次点击

    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 })

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

    4 条回复    2024-12-30 14:42:15 +08:00
    doco
        1
    doco  
       2 天前
    showChart 如果是绑定到图表上控制显隐的话直接改成方法, 不要用 computed
    ```
    function showChart(index: number) {
    ...
    }
    ```
    zhuoyue100
        2
    zhuoyue100  
    OP
       2 天前
    就是页面有 9 个元素,每次显示 3 个,用的 element plus 分页插件,分页时控制元素的显示隐藏,我上面写的没效果
    dingjs
        3
    dingjs  
       2 天前
    把计算属性去掉就行了,这个返回函数多此一举,猜测应该是 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
        4
    zhuoyue100  
    OP
       2 天前
    @dingjs 按照你的方法可以了,感谢~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3480 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:45 · PVG 12:45 · LAX 20:45 · JFK 23:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.