如何为您的 Next.js 应用程序添加分页

Next.js是构建生产就绪的 React 应用程序的最简单和最受欢迎的方法之一。近年来,Next.js 呈指数级增长,许多公司都采用它来构建自己的应用程序。如何永久删除您的 Reddit 帐户在本文中,如何更改 Gmail 的语言设置我们将学习如何向 Next.js 应用程序添加分页。我们将讨论如何设置 Next.js 项目、如何在 Android、iPhone 和计算机上删除 TikTok 视频使用getStaticProps方法从 API 端点获取数据以及实现分页本身。

跳跃前进:

  • 启动我们的 Next.js 项目

  • 数据获取getStaticProps

  • 实现Pagination组件

  • 添加pagination helper功能

启动我们的 Next.js 项目

首先,我们将使用命令创建一个新的 Next.js应用程序。如何删除 Telegram 帐户:2 种快速方法然后,我们可以使用命令进入项目目录并运行以在开发服务器上启动项目。对于这个项目,我们将使用vanilla CSS进行样式设置,因为它更侧重于功能。npx create-next-app next-paginationcd next-paginationyarn dev or npm run dev

数据获取getStaticProps

用于实现分页的数据将来自. 将使用该函数获取数据。{JSON} Placeholder APIgetStaticProps

该getStaticPro如何更改手机或智能音箱上 Google 助理的声音ps函数始终在服务器上运行,Next.js 将在构建时使用getStaticProps. Fetch API将用于从前面提到的 API 端点获取数据:

import Head from "next/head";

import Image from "next/image";

import styles from "../styles/Home.module.css";

import Pagination from "../src/components/Pagination";

import { useState, useEffect } from "react";

import { paginate } from "../src/helpers/paginate";

export default function Home({ data }) {

console.log(data)

return (

<div className={styles.container}>

<Head>

<title>Create Next App</title>

<meta name="description" content="Generated by create next app" />

<link rel="icon" href="/favicon.ico" />

</Head>

<p>NextJS X Pagination</p>

export const getStaticProps = async () => {

const res = await fetch("https://jsonplaceholder.typicode.com/todos");

const data = await res.json();

return {

props: { data },

};

};

从 props 返回的数据将在home组件中被解构,如何访问和使用 Microsoft Office 中的剪贴板因此可以将其记录在控制台中。这将确认数据已被提取。如何在 Android 和 iOS 上创建和使用 Twitter 圈子因此,在控制台中,我们应该有一个100包含 JSON Typicode 网站中指定的对象数组的帖子:

现在,如何将您的 Spotify 帐户连接到您的 Discord我们可以在网页上呈现这些数据并查看它们在 UI 上的外观:

import Head from "next/head";

import Image from "next/image";

import styles from "../styles/Home.module.css";

export default function Home({ data }) {

return (

<div className={styles.container}>

<Head>

<title>Create Next App</title>

<meta name="description" content="Generated by create next app" />

<link rel="icon" href="/favicon.ico" />

</Head>

<p>

<strong>NextJS x Pagination</strong>

</p>

{data.map((item) => {

return <p key={item.id}>{item.title}</p>;

})}

</div>

);

}

export const getStaticProps = async () => {

const res = await fetch("https://jsonplaceholder.typicode.com/todos");

const data = await res.json();

return {

props: { data },

};

};

实现Pagination组件

对于Pagination组件实现,如何取消隐藏 Reddit 上的帖子以及隐藏它们时会发生什么我们将创建一个srcandcomponent文件夹。如何在 PC 和移动设备上管理 Gmail 通知在内部component,我们将创建一个文件,该文件将在文件中呈现:Pagination.jsindex.js

const Pagination = () => {

return (

<div>Pagination</div>

)

}

export default Pagination

渲染Pagination 的 in将有四个道具:, , , 和。如何知道您是否在 Facebook Messenger 上被屏蔽这将是我们从 API 获取的数据的长度,在本例中为:index.jsitemscurrentPagepageSizeonPageChangeitems100

将pageSize设置为,10因为我们希望从 开始分页,并且将存储在默认值为 的状态中,因为页面将从第一页开始。1-10currentPage1

这onPageChange将是一个函数来设置我们所在的当前页面,例如,从第一页移动到第二页:

import Head from "next/head";

import Image from "next/image";

import styles from "../styles/Home.module.css";

import Pagination from "../src/components/Pagination";

import { useState } from "react";

export default function Home({ data }) {

const [currentPage, setCurrentPage] = useState(1);

const pageSize = 10;

const onPageChange = (page) => {

setCurrentPage(page);

};

return (

<div className={styles.container}>

<Head>

<title>Create Next App</title>

<meta name="description" content="Generated by create next app" />

<link rel="icon" href="/favicon.ico" />

</Head>

<p>

<strong>NextJS x Pagination</strong>

</p>

{data.map((item) => {

return <p key={item.id}>{item.title}</p>;

})}

<Pagination

items={data.length} // 100

currentPage={currentPage} // 1

pageSize={pageSize} // 10

onPageChange={onPageChange}

/>

</div>

);

}

export const getStaticProps = async () => {

const res = await fetch("https://jsonplaceholder.typicode.com/todos");

const data = await res.json();

return {

props: { data },

};

};

然后,我们将解构这四个 如何在 Twitter 上查看敏感内容propsPagination并将它们用于分页实现:

import styles from "../../styles/Home.module.css";

const Pagination = ({ items, pageSize, currentPage, onPageChange }) => {

const pagesCount = Math.ceil(items / pageSize); // 100/10

if (pagesCount === 1) return null;

const pages = Array.from({ length: pagesCount }, (_, i) => i + 1);

console.log(pages)

return (

<div>

<div>Pagination</div>

</div>

);

};

export default Pagination;

将items除以pageSize并存储在pagesCount变量中。如何清除 iPhone 和 Android 上的 WhatsApp 缓存静态方法将用于根据长度创建一个新实例,即.Array.from()ArraypagesCount10

pages让我们在控制台中登录,如何清除 Android、iOS 和 Web 上的 Reddit 搜索历史记录看看我们有什么:

现在,我们可以映射并渲染其中的pages array值。如何在桌面版和移动版 Outlook 中创建共享日历将在其中实现函数的每个值都有一个元素:(1-10)anchoronClick

const Pagination = ({ items, pageSize, currentPage, onPageChange }) => {

const pagesCount = Math.ceil(items / pageSize); // 100/10

if (pagesCount === 1) return null;

const pages = Array.from({ length: pagesCount }, (_, i) => i + 1);

return (

<div>

<ul className={styles.pagination}>

{pages.map((page) => (

<li

key={page}

className={

page === currentPage ? styles.pageItemActive : styles.pageItem

}

>

<a className={styles.pageLink} onClick={() => onPageChange(page)}>

{page}

</a>

</li>

))}

</ul>

</div>

);

};

export default Pagination;

框的样式pagination如何在 Android 和 iPhone 上更改 WhatsApp 中的输入语言将在以下位置完成:Home.module.css

.container {

padding: 0 2rem;

}

.pagination {

display: flex;

justify-content: space-between;

align-items: center;

list-style: none;

}

.pageLink {

cursor: pointer;

}

/* pagination pageItem */

.pageItem {

display: flex;

justify-content: center;

align-items: center;

width: 2rem;

height: 2rem;

border: 1px solid #eaeaea;

border-radius: 0.5rem;

cursor: pointer;

}

/* pagination page item when active */

.pageItemActive {

display: flex;

justify-content: center;

align-items: center;

width: 2rem;

height: 2rem;

border: 1px solid #eaeaea;

border-radius: 0.5rem;

cursor: pointer;

background-color: red;

}

一旦我们向下滚动到数据的末尾posts,如何使用 iPhone、Android 和桌面设备清除 Spotify 上的队列我们应该看到正在渲染的框。该函数传递给参数为 的元素,因此当单击框的任何部分时,它将当前页设置为单击的页码如何在桌面和移动设备上更改 Google Play 中的付款方式1-10onPageChangeanchorpage(1-10)

请记住,如何在 PC 和移动设备上保护您的 Google 活动历史记录文件onPageChange中的函数:index.js

const onPageChange = (page) => {

setCurrentPage(page);

};

现在,让我们看看我们有什么:

添加pagination helper功能

现在,我们已经能够在我们的应用程序中实现分页,如何在 Viki 上创建和加入观看派对但是我们仍然有 100 个帖子被渲染到第一页而不是 10 个。如何在 Google 文档上创建无页文档为了实现这个,我们将在文件中创建一个helper函数:paginate.js

export const paginate = (items, pageNumber, pageSize) => {

const startIndex = (pageNumber - 1) * pageSize;

return items.slice(startIndex, startIndex + pageSize);

};

该paginate文件将具有三个参数:如何在 Telegram 上创建电话号码链接items、pageNumber和pageSize。该函数将在文件中调用,参数将按如下方式传递:index.js

const paginatedPosts = paginate(data, currentPage, pageSize);

在这里,作为从 API 端点返回的数据数组data传递。如何在 WhatsApp 中创建和使用社区itemsThecurrentPage代表pageNumber,并且pageSize作为 传入pageSize。

在pagination函数中,首先通过从中减去数字并将其乘以来startIndex提取。然后,我们切片. 这是我们最初得到的数据数组,直到我们得到+值。currentPage1pageSize(10)itemsstartIndexstartIndexpageSize

例如,在第一页上,pageNumber将是1,如何在 Google 地图上创建您最喜欢的地方列表因此startIndex将是:。1-1 * 10 gives 0

然后, (在as中声明)将导致. 因此,切片从 of till开始。startIndex (0) + pageSizeindex.js1010Array length09

让我们登录paginatedPosts到控制台,如何在移动设备和桌面设备上重启 Discord看看我们有什么:

我们可以在网页上查看我们现在拥有的内容:

而且,我们可以对所有页面进行分页:

我们有它!

结论

感谢您的阅读!我希望本教程能为您提供向 Next.js 应用程序添加分页所需的知识。您可以根据您的用例自定义样式,因为本教程主要关注实现功能的逻辑。您可以在我的存储库中找到该项目的完整代码,并在此处的Vercel 上找到已部署的项目。编码愉快!

猜你喜欢

转载自blog.csdn.net/weixin_47967031/article/details/130068823