برنامه نویسی

نحوه استفاده از مؤلفه پیوند Next.js (با مثال)

برای چندین سال، عنصر لنگر HTML (<a> </a>) روش سنتی پیمایش به صفحات وب داخلی و وب سایت ها و صفحات وب خارجی باقی ماند. این رویکرد برای مدتی به خوبی جواب داد، اما با پیچیده‌تر شدن وب، نیاز به راه‌حل بهتری وجود داشت.

وارد کامپوننت Next.js Link شوید. این مؤلفه به توسعه دهندگان اجازه می دهد تا به راحتی پیوندهایی ایجاد کنند که برای ناوبری داخلی و خارجی بهینه شده اند. این شبیه به عنصر لنگر بومی است، اما مزایای اضافی مانند سفارشی کردن رفتار ناوبری از طریق لوازم، عملکرد بهبود یافته و SEO را ارائه می دهد.

در این مقاله، ما شما را با مولفه Next.js Link آشنا می‌کنیم و موارد مختلفی را که می‌توانید برای ایجاد مکانیسم‌های پیوند قدرتمند در برنامه Next.js خود به کار ببرید، پوشش می‌دهیم.

در اینجا چیزهایی هستند که یاد خواهید گرفت:

  • معرفی <Link/> جزء
  • اجزای پیوند Next.js
    • وسایل مورد نیاز
    • href
    • لوازم اختیاری
    • as
    • passHref
    • prefetch
    • replace
    • scroll
    • locale

پیش نیازها

برای دنبال کردن این آموزش به موارد زیر نیاز دارید:

  • درک خوبی از جاوا اسکریپت و سینتکس React
  • یک برنامه شروع Next.js (برای دستورالعمل‌های راه‌اندازی به این صفحه مراجعه کنید)

معرفی کامپوننت پیوند Next.js

کامپوننت Next.js Link یک ابزار قدرتمند برای ایجاد لینک در برنامه های Next.js است. این یک API ساده ارائه می دهد که می توانید از آن برای ایجاد لینک بین صفحات، اضافه کردن رشته های پرس و جو و حتی ارسال پروپوزال ها استفاده کنید.

با <Link />، توسعه دهندگان می توانند به سرعت مکانیسم های پیوند پویا و تعاملی را در برنامه های خود ایجاد کنند. برای استفاده از مولفه Next.js Link، باید آن را از ماژول next/link وارد کنید.

در اینجا یک مثال اساسی آورده شده است:

import Link from "next/link";

export default function Contact() {
  return (
    <Link href="https://dev.to/about">
      <a>About Page</a>
    </Link>
  );
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

لوازم مولفه پیوند

برای سفارشی کردن رفتار ناوبری و ارسال پارامترهای اضافی به مسیر مقصد، می‌توان موارد مختلفی را در یک جزء Next.js Link ثبت کرد.

وسایل مورد نیاز

را <Link> جزء برای عملکرد فقط به یک پایه نیاز دارد – href. اگر نتوانستید این پایه را تعریف کنید <Link />، یک خطا دریافت خواهید کرد.

href

وقتی استفاده می کنید </Link>، باید URL مقصد را به عنوان مقدار به آن ارائه دهید href پشتیبانی URL مقصد جایی است که کاربر پس از کلیک بر روی لینک ارسال می شود. این می تواند یک URL نسبی، یک URL مطلق یا یک شی URL باشد.

URL نسبی:

<Link href="https://dev.to/about">
  <a>About (Relative URL)</a>
</Link>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

URL مطلق:

<Link href="https://www.ubahthebuilder.tech/about">
  <a>About(Absolute URL)</a>
</Link>;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

شی URL:
شی URL به شما امکان می دهد رشته ها و پارامترهای پرس و جو را با ارسال آنها در یک شی به جزء Next.js Link ارسال کنید. ما از شی URL برای مسیریابی پویا استفاده می کنیم، جایی که صفحات مختلف بسته به پارامتر URL ارائه می شوند.

در اینجا یک نسخه نمایشی است که نحوه استفاده از آن را در مؤلفه Link نشان می دهد:

<Link
  href={{
    pathname: "/posts",
    query: { post: "1" },
  }}
>
  <a>Read post 1 details</a>
</Link>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این مثال مشکل را حل می کند href ارزش به: /posts/?post=1.

لوازم اختیاری

لوازم زیر اختیاری هستند و به شما امکان می دهند رفتار خود را سفارشی کنید <Link /> جزء.

as

ما استفاده می کنیم as برای تعریف یک تزئین کننده پیوند که به شما امکان می دهد اطلاعات اضافی را هنگام استفاده از مسیرهای پویا منتقل کنید.

به عنوان مثال، اگر یک برنامه وابسته را در برنامه وب خود اجرا می کنید، می توانید از آن استفاده کنید as هنگامی که مشتری قصد خرید با استفاده از پیوند منحصر به فرد یک شرکت وابسته را دارد، شناسه وابسته را منتقل کنید.

در اینجا دو نمونه وجود دارد:

https://mystore.com/products/1?affID=21223543
http://www.blog.openreplay.com/post?language=en

در اینجا دکوراتور پیوند بعد از می آید ? در URL، که معمولاً همینطور است. توجه داشته باشید که تزئین کننده پیوند، مقصد URL را تغییر نمی دهد. تنها کاری که انجام می دهد این است که اطلاعات اضافی را منتقل کند.

بیایید یک مثال را ببینیم. به پروژه Next.js خود بروید و پوشه و ساختار فایل زیر را در داخل پوشه pages ایجاد کنید

📦pages
  📂api
   📜welcome.js
  📂posts
   📜index.js
   📜[post].js
  📜index.js
  📜_app
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نحوه استفاده از مؤلفه پیوند Nextjs با مثال

در مرحله بعد کد زیر را به آن اضافه کنید pages/posts/index.js:

import React from "react";
import Link from "next/link";

const BlogPosts = () => {
  const postIDs = ["1", "2", "3"];
  return (
    <>
      <div>
        <h1>List of posts</h1>
      </div>

      {postIDs.map((post, key) => (
        <Link href="/posts/[post]" as={`posts/${post}/?language=en`} key={key}>
          <a>
            <h1>Post {post}</h1>
            <p>Read more about post {post}</p>
          </a>
        </Link>
      ))}
    </>
  );
};

export default BlogPosts;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و در pages/posts/[post].js، کد زیر را اضافه کنید:

import React from "react";
import Link from "next/link";
import { useRouter } from "next/router";

const Post = () => {
  const router = useRouter();
  const postID = router.query.post;
  return (
    <>
      <h1>
        <Link href="/products">
          <a>See all posts</a>
        </Link>
      </h1>
      <div>
        <h5>Post {postID} Details Page</h5>
      </div>
    </>
  );
};

export default Post;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا چیزی است که اگر به http://localhost:3000/posts بروید پیدا خواهید کرد:

1682983111 239 نحوه استفاده از مؤلفه پیوند Nextjs با مثال

روی هر یک از پست ها کلیک کنید. شما را به صفحه جزئیات هر پست هدایت می کند (که یک مسیر پویا است)

1682983111 685 نحوه استفاده از مؤلفه پیوند Nextjs با مثال

در تصویر بالا می بینید که آدرس پست اول حاوی یک دکوراتور لینک است. ?language=en، که بر مقصد پیوند تأثیر نمی گذارد. برای پست دو و پست سه هم همینطور.

passHref

گاهی اوقات با مواردی مواجه می شوید که </Link> فرزند کامپوننت ممکن است یک مؤلفه سفارشی باشد که یک برچسب لنگر را می‌پیچد (به کتابخانه‌ها مانند مؤلفه‌های سبک‌دهی شده فکر کنید). در چنین مواردی، مشخص کنید passHref بر روی مولفه Next.js Link قرار دهید. انجام این کار را مجبور می کند Link برای ارسال href به فرزندش کمک کند

اضافه کردن passHref prop برای سئو و دسترسی بسیار مهم است زیرا حذف prop باعث ترک تو در تو می شود <a> برچسب ها بدون الف href ویژگی.

بیایید یک مثال را ببینیم. کد را ویرایش کنید pages/post/[post].js شامل موارد زیر باشد:

import React from "react";
import Link from "next/link";
import { useRouter } from "next/router";

// Import this
import styled from "styled-components";

// Add this:
const CustomLink = styled.a`
      color: red;
      font-size: 30px;
    `;

const Post = () => {
  const router = useRouter();
  const postID = router.query.post;
  return (
    <>
      <h1>
        <Link href="/products">Back to posts</Link>
      </h1>
      <h1>
        <NavLink href="/" name="Home" />
      </h1>
      <div>
        <h5>Post {postID} Details Page</h5>
      </div>
    </>
  );
};

// Add this:
const NavLink = ({ href, name }) => {
  return (
    <Link href={href} passHref legacyBehavior>
      <CustomLink>{name}</CustomLink>
    </Link>
  );
};

export default Post;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون به http://localhost:8000/posts بروید و روی هر پست کلیک کنید. در صفحه جزئیات پست، یک پیوند قرمز سفارشی باید مانند تصویر زیر نشان داده شود:

1682983112 556 نحوه استفاده از مؤلفه پیوند Nextjs با مثال

prefetch

به طور پیش فرض، مولفه Next.js Link این را فعال می کند prefetch قابلیتی که محتوای صفحه را در پس زمینه از قبل بارگذاری می کند و عملکرد برنامه شما را به شدت بهبود می بخشد.

به خاطر داشته باشید که بارگذاری اولیه صفحات فقط در برنامه های تولیدی کار می کند. با تنظیم می توانید آن را خاموش کنید prefetch مقدار ‘s false است، همانطور که در زیر نشان داده شده است:

<Link href="/posts" prefetch={false}>
  <a>Get posts</a>
</Link>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

replace

معمولاً وقتی به یک URL جدید هدایت می‌شوید، آن URL به پشته اضافه می‌شود. با کلیک بر روی دکمه بازگشت در نوار پیمایش در مرورگر، به صفحه قبلی در پشته باز می گردید.

را replace prop این رفتار ناوبری را با جایگزین کردن وضعیت فعلی تاریخ تغییر می دهد.

ویرایش محتوا در pages/index.js به موارد زیر:

import Head from "next/head";
import Image from "next/image";
import Link from "next/link";
import styles from "../styles/Home.module.css";

export default function Home() {
  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>

      <main className={styles.main}>
        <h1 className={styles.title}>Welcome to my homepage</h1>
        <h1>
          <Link href="/posts">Read my blog posts</Link>
        </h1>
      </main>
    </div>
  );
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

فایل را ذخیره کرده و به http://localhost:3000 بروید. شما باید صفحه ای را پیدا کنید که شبیه صفحه زیر باشد:

1682983112 399 نحوه استفاده از مؤلفه پیوند Nextjs با مثال

اگر روی آن کلیک کنید Go to products پیوند صفحه، مشاهده کنید که ناوبری برنامه چگونه کار می کند وقتی روی دکمه پیمایش برگشت بدون کلیک کلیک می کنیم replace در GIF زیر پشتیبانی کنید.

نحوه استفاده از مؤلفه پیوند Nextjs با مثال

معمولی، درسته؟ حالا برو داخل pages/posts/index.js و طبق تصویر زیر، جایگزینی را به مولفه پیوند هر پست اضافه کنید:

// ...
{
  postIDs.map((product, key) => (
    <Link
      href="/posts/[post]"
      as={`post/${post}/?language=en`}
      key={key}
      replace={post === "3" ? true : false}
    >
      <a>
        <h1> Post {post}</h1>
        <p>Read more about post {post}</p>
      </a>
    </Link>
  ));
}
// ...
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالا بیایید به مرورگر برگردیم و ببینیم که ناوبری با آن چگونه کار می کند replace پایه به آن اضافه شده است.

1682983113 359 نحوه استفاده از مؤلفه پیوند Nextjs با مثال

از نسخه ی نمایشی بالا، توجه کنید که چگونه با کلیک بر روی دکمه بازگشت در پست سوم آنها، ما را به جای صفحه “فهرست پست ها” مستقیماً به صفحه اصلی می برد. این اتفاق می افتد زیرا ما آن را اضافه کردیم replace در مسیر پست سوم

scroll

وقتی صفحه جدیدی را با Next.js پیمایش می کنید <Link/>، به طور خودکار به سمت بالا حرکت می کند. می‌توانید این رفتار را غیرفعال کنید و حتی از طریق شناسه‌های هش (بخشی از URL بعد از #) به بخش‌های خاصی از صفحه جدید بروید.

برای غیرفعال کردن خودکار «scroll to top» یا hash ID، اسکرول را در مؤلفه Link روی false قرار دهید، همانطور که در زیر نشان داده شده است:

<Link href="/blog/intro" scroll={false}>
  <a>Disables scrolling to the top</a>
</Link>;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

از هش شناسه ها برای اسکرول کردن به بخش های خاصی از یک صفحه وب استفاده کنید:

<Link href="https://blog.openreplay.com/what-is-css/#css-selectors">
  <a>Scroll to CSS selectors</a>
</Link>;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

locale

را locale prop به شما این امکان را می دهد که محتوای یکسانی را به زبان های مختلف بر اساس زبان یا مکان دلخواه کاربران ارائه دهید. این برای وب سایت هایی که به کاربران کشورها و مناطق مختلف خدمات ارائه می دهند بسیار مفید است.

می‌توانید برنامه Next.js خود را راه‌اندازی کنید تا با پیکربندی شی i18n در next.config.js، نسخه‌های مختلف صفحه وب خود را به زبان دلخواه کاربران ارائه دهد. درباره پیکربندی محلی‌ها در اینجا بیشتر بخوانید.

نتیجه

هنگام توسعه برنامه‌ها در Next.js، توصیه می‌کنیم از مؤلفه Next.js Link روی عنصر لنگر اصلی برای مسیریابی استفاده کنید. Next Link نه تنها ناوبری سمت سرویس گیرنده را ساده می کند، بلکه به شما امکان می دهد با استفاده از ابزارهایی که در این مقاله به آن پرداختیم، رفتار آن را مطابق با مورد استفاده خود سفارشی کنید.

برای کسب اطلاعات بیشتر در مورد Next.js، راهنمای کامل ما در مورد Next.js و MongoDB را بخوانید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا