Next.js 애플리케이션에 페이지 매김을 추가하는 방법

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개의 게시물 배열이 있어야 합니다.

이제 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 },

};

};

实现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