【问题标题】:pagination logic in calculating total of pages计算总页数的分页逻辑
【发布时间】:2018-02-16 21:17:41
【问题描述】:

我正在使用一个反应组件,需要我在下面的 prop 中传递

<Pager 
      totalPages={10}
      currentPage={1}
/>

我无法计算出 api 中的计算,因为我有 total_items,而不是 totalPages。如果我有 50 个total_items,我怎样才能为totalPages 属性生成 5 个?说我的限制是 10。

【问题讨论】:

  • 如果您可以发布寻呼机组件,那将有所帮助
  • total_items / 10 应该给你页数。您还需要考虑除法的其余部分(total_items % 10)。所以总页数将是 total_items / 10 和 1,以防余数 > 0。
  • @Umesh 那么答案是什么?你也很困惑吗?
  • 我的解释和fubar回答的一样。

标签: javascript reactjs algorithm pagination


【解决方案1】:

total_items 除以limit,然后向上取整。

Math.ceil(total_items/limit);

50 items / 10 per page = 5 pages
55 items / 10 per page = 6 pages

【讨论】:

  • 如果items &lt; perpage,则返回0
  • @saman.shahmohamadi 如果您使用的是Math.ceil,这是不可能的,除非项目数为 0。例如Math.ceil(1/10) = 1
  • 对于可能将 total_items 作为整数传递的其他语言,您需要将其转换为浮点数。例如,在 Ruby 中 (total_items.to_f / limit).ceil
  • 当你想拥有1个total_items === 0时,你可以使用Math.ceil(total_items/limit)||1;
【解决方案2】:

您需要检查除法是否有商,因为显然很少有项目需要在另一个页面中显示

例如:

6 items
5 limit

如果我们只是 divide and ceil 我们会得到 1 这是不正确的,因为有一个项目需要额外的页面来计算

totalPages_pre = (total_items/limit)
totalPages = (search.total % page_size) == 0 ? totalPages_pre : totalPages_pre + 1

【讨论】:

  • Math.ceil() 确实给出了更高的数字(在这种情况下为 2)。
  • 这句话实际上是正确的“如果我们只是除法和ceil我们将得到1”,这是由java的整数运算引起的,Math.ceil期望一个double但除法integer / integer返回integer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 2021-05-21
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
相关资源
最近更新 更多