【问题标题】:NextJS getServerSideProps paginationNextJS getServerSideProps 分页
【发布时间】:2021-07-15 11:55:46
【问题描述】:

我正在使用 NextJS 和 Supabase 作为数据库。我不确定如何在这里使用分页。因为我正在寻找的解决方案是将查询传递给 API。我不能这样做,因为我直接从数据库中获取它。我这里有什么解决方案?

import { supabase } from "../lib/supabase";
import { useRouter } from "next/router";

function Cars({ data, count, page }) {
  const router = useRouter();
  return (
    <div>
      {data.map((carsdata) => (
        <ul key={carsdata.id}>
          <li>{carsdata.name}</li>
        </ul>
      ))}

      <button onClick={() => router.push(`/Cars?page=${page - 1}`)}>
        Prev
      </button>
      <button onClick={() => router.push(`/Cars?page=${page + 1}`)}>
        Next
      </button>
    </div>
  );
}

export async function getServerSideProps({ query: { page = 1 } }) {
  const { data, count } = await supabase
    .from("cars")
    .select("*", { count: "exact" })
    .order("id", { ascending: true })
    .range(0, 9)
  return {
    props: {
      data: data,
      count: count,
      page: parseInt(page),
    },
  };
}

解决方案是像这样将查询传递给getServerSideProps 中的API

const res = await fetch(`${API}/start=${start}`);
const data = await res.json()

【问题讨论】:

    标签: javascript reactjs next.js supabase


    【解决方案1】:

    您应该从客户端进行分页,因为getServerSideProps 在您刷新页面时执行。

    【讨论】:

    • 第一次渲染可以使用 getServerSideProps 但你必须从客户端处理进一步的分页,是的。
    • @gazdagergo 是的,没错。
    • @AlenVlahovljak 你能指出我该怎么做吗?
    • @kelly 查看this
    • 非常感谢。
    猜你喜欢
    • 2022-01-09
    • 2020-11-13
    • 2020-06-30
    • 2021-09-25
    • 2022-12-03
    • 2020-07-25
    • 2021-11-17
    • 2022-10-18
    • 2020-08-09
    相关资源
    最近更新 更多