![](https://img-blog.csdnimg.cn/img_convert/f24398318d774130be9408742a23b5db.png)
Next.js는 프로덕션 준비가 된 React 애플리케이션을 구축하는 가장 쉽고 가장 널리 사용되는 방법 중 하나입니다. Next.js는 최근 몇 년 동안 기하급수적으로 성장했으며 많은 회사에서 애플리케이션을 구축하기 위해 이를 채택했습니다. Reddit 계정을 영구적으로 삭제하는 방법 Gmail의 언어 설정을 변경하는 방법 이 기사에서는 Next.js 애플리케이션에 페이지 매김을 추가하는 방법을 알아봅니다. Next.js 프로젝트를 설정하는 방법, Android, iPhone 및 컴퓨터에서 TikTok 비디오를 삭제하는 방법, getStaticProps 메서드를 사용하여 API 끝점에서 데이터를 가져오는 방법, 페이지 매김 자체를 구현하는 방법에 대해 설명합니다.
앞으로 이동:
Next.js 프로젝트 시작
데이터 획득 getStaticProps
페이지 매김 구성 요소 구현
페이지 매김 도우미 기능 추가
Next.js 프로젝트 시작
먼저 명령을 사용하여 새 Next.js 애플리케이션을 만듭니다. Telegram 계정을 삭제하는 방법: 2가지 빠른 방법 그런 다음 명령을 사용하여 프로젝트 디렉토리로 이동하고 실행하여 개발 서버에서 프로젝트를 시작할 수 있습니다. 이 프로젝트에서는 기능에 더 중점을 둔 바닐라 CSS를 스타일링에 사용할 것입니다. npx create-next-app next-pagination cd next-pagination yarn dev 또는 npm run dev
데이터 획득 getStaticProps
페이지 매김을 구현하는 데 사용되는 데이터는 다음에서 가져옵니다. 함수는 데이터를 가져오는 데 사용됩니다. {JSON} 자리 표시자 API getStaticProps
휴대전화 또는 스마트 스피커 ps 기능에서 Google 어시스턴트의 음성을 변경하는 방법에 대한 getStaticPro는 서버에서 항상 실행되며 Next.js는 빌드 시 getStaticProps를 사용합니다. Fetch API는 이전에 언급한 API 엔드포인트에서 데이터를 가져오는 데 사용됩니다. :
"next/head"에서 헤드 가져오기;
"다음/이미지"에서 이미지 가져오기;
"../styles/Home.module.css"에서 스타일 가져오기;
"../src/components/Pagination"에서 페이지 매김 가져오기;
import { useState, useEffect } from "react";
import { paginate } from "../src/helpers/paginate";
.
기본 함수 내보내기 Home({ 데이터 }) {
콘솔.로그(데이터)
반품 (
<사업부 클래스 이름={styles.container}>
<머리>
<title>다음 앱 만들기</title>
<meta name="description" content="다음 앱 생성으로 생성됨" />
<링크 rel="icon" href="/favicon.ico" />
</헤드>
.
<p>NextJS X 페이지 매김</p>
.
내보내기 const getStaticProps = async () => {
const res = await fetch(" https://jsonplaceholder.typicode.com/todos");
const 데이터 = await res.json();
.
반품 {
소품: { 데이터 },
};
};
props에서 반환된 데이터는 홈 구성 요소에서 해체되므로 콘솔에 기록 할 수 있습니다. 이렇게 하면 데이터가 추출되었음을 확인할 수 있습니다. Android 및 iOS에서 Twitter 서클을 만들고 사용하는 방법 따라서 콘솔에는 웹 사이트에 지정된 JSON Typicode 개체를 포함하는 100개의 게시물 배열이 있어야 합니다.
![](https://img-blog.csdnimg.cn/img_convert/3cbd813218e04203a0ca16fe6974180f.png)
이제 Spotify 계정을 Discord에 연결하는 방법 이 데이터를 웹에서 렌더링하고 UI에서 어떻게 보이는지 확인할 수 있습니다.
"next/head"에서 헤드 가져오기;
"다음/이미지"에서 이미지 가져오기;
"../styles/Home.module.css"에서 스타일 가져오기;
기본 함수 내보내기 Home({ 데이터 }) {
반품 (
<사업부 클래스 이름={styles.container}>
<머리>
<title>다음 앱 만들기</title>
<meta name="description" content="다음 앱 생성으로 생성됨" />
<링크 rel="icon" href="/favicon.ico" />
</헤드>
.
<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 },
};
};
![](https://img-blog.csdnimg.cn/img_convert/8889f85cfd82dded735bc36f610e3214.gif)
实现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
![](https://img-blog.csdnimg.cn/img_convert/2b7eb75f372f456cb7732c219d3a7201.png)
将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 搜索历史记录看看我们有什么:
![](https://img-blog.csdnimg.cn/img_convert/00e95e30ddda48f5ad8cbee24ed37209.png)
现在,我们可以映射并渲染其中的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);
};
现在,让我们看看我们有什么:
![](https://img-blog.csdnimg.cn/img_convert/5a83473c0f5e429cbb16339623156b59.png)
添加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看看我们有什么:
![](https://img-blog.csdnimg.cn/img_convert/d3723eefdf9e4ec0b9bf110bb611e119.png)
我们可以在网页上查看我们现在拥有的内容:
![](https://img-blog.csdnimg.cn/img_convert/84eefd3bb09c414fab7597a117f88be7.png)
而且,我们可以对所有页面进行分页:
![](https://img-blog.csdnimg.cn/img_convert/0bbb77c5a1f07faaa26bf11699126961.gif)
我们有它!
结论
感谢您的阅读!我希望本教程能为您提供向 Next.js 应用程序添加分页所需的知识。您可以根据您的用例自定义样式,因为本教程主要关注实现功能的逻辑。您可以在我的存储库中找到该项目的完整代码,并在此处的Vercel 上找到已部署的项目。编码愉快!