KIRAKIRA-DOUGA / KIRAKIRA-Cerasus

KIRAKIRA's frontend powered by Nuxt 3.
https://kirakira.moe
BSD 3-Clause "New" or "Revised" License
113 stars 17 forks source link

异步更新页数时,翻页器的中间数字不显示 #222

Open cfdxkk opened 3 months ago

cfdxkk commented 3 months ago

最小重现:

<script setup lang="ts">
    const pageCount = ref<number>();
    setTimeout(() => {
        pageCount.value = 10;
    }, 5000);
</script>

<template>
    <Pagination :current="1" :pages="pageCount" :displayPageCount="7" />
</template>

效果: image

cfdxkk commented 2 months ago

@AkutaZehy 在 onMounted() 生命周期钩子中更新页数,仍然会导致翻页器的中间页消失。

因此,如果翻页器的页数依赖于请求响应数据,且请求在非 SSR 时发起,就必须按如下方式使用:

if (process.client)
        await getSomething();

该使用方式的局限性为:getSomething 中直接操控 DOM 的代码可能会导致错误,在 getSomething 中若有变量的状态发生改变,其副作用或副作用链中操控 DOM 的代码也可能会导致错误。

otomad commented 2 months ago

@cfdxkk @AkutaZehy

不要使用 process.client,项目为了统一管理这些东西使用了封装的 environment.client

当如果后期上游发生 API 更改时以便快速修改封装函数转移。

cfdxkk commented 2 months ago

@cfdxkk @AkutaZehy

不要使用 process.client,项目为了统一管理这些东西使用了封装的 environment.client

当如果后期上游发生 API 更改时以便快速修改封装函数转移。

了解