Closed1

即席ページネーションパラメーター作成メソッド

prev, next, itemsを返す最低限のメソッド

type Params = {
  pathPrefix: string
  totalPage: number
  currentPage?: number
}

/** ページネーションパラメーターを作成 */
export const createPaginationParams = ({ pathPrefix, totalPage, currentPage = 1 }: Params) => {
  const prev = () => {
    if (currentPage === 1) return null
    if (2 < currentPage) `${pathPrefix}/page/${currentPage - 1}`
    return `${pathPrefix}`
  }

  const next = () => {
    if (currentPage >= totalPage) return null
    return `${pathPrefix}/page/${currentPage + 1}`
  }

  const items = () => {
    return [...new Array(totalPage)].map((_, i) => {
      const pageNum = i + 1
      return {
        pageNum,
        path: pageNum > 1 ? `${pathPrefix}/page/${pageNum}` : `${pathPrefix}`
      }
    })
  }

  return {
    prev: prev(),
    next: next(),
    items: items()
  }
}
このスクラップは2021/10/11にクローズされました
ログインするとコメントできます