برنامه نویسی

نحوه مدیریت واکشی داده در Next.js با استفاده از SWR

مدیریت واکشی داده‌ها در Next.js می‌تواند مشکل باشد، اما استفاده از کتابخانه SWR با نام مستعار (کهنه-در حالی که تأیید مجدد می‌شود) آن را بسیار قابل مدیریت می‌کند. SWR یک کتابخانه سبک وزن است که به شما امکان می دهد واکشی و ذخیره سازی داده ها را در برنامه Next.js خود به طور موثر انجام دهید.

SWR بسیاری از ویژگی‌های حیاتی را ارائه می‌کند، مانند توانایی آن در تأیید مجدد داده‌ها به صورت خودکار، ذخیره‌سازی حافظه پنهان، و غیره. این مقاله اطلاعاتی در مورد نحوه راه‌اندازی و ادغام کتابخانه SWR در پروژه Next.js ارائه می‌دهد.

نصب SWR

برای استفاده از SWR کتابخانه در برنامه Next.js خود، ابتدا باید کتابخانه را با اجرای دستور زیر در ترمینال خود نصب کنید:

npm install swr
وارد حالت تمام صفحه شوید

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

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

yarn add swr
وارد حالت تمام صفحه شوید

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

بعد، شما وارد کنید useSWR قلاب کنید تا به راحتی داده ها را از API خود واکشی کنید. این useSWR هوک یک قلاب برای مدیریت واکشی و ذخیره داده ها است. این useSWR hook یک کلید (URL یا شناسه) را به عنوان ورودی می گیرد و یک شی را برمی گرداند که حاوی داده های واکشی شده، خطا و وضعیت بارگیری است.

برای استفاده از useSWR هوک، شما باید یک تابع واکشی حاوی درخواست واکشی ایجاد کنید.

مثلا:

const fetcher = async (url) => {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;
}
وارد حالت تمام صفحه شوید

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

پس از ایجاد تابع fetcher، از آن در useSWR قلاب:

import useSWR from 'swr'

const fetcher = async (url) => {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;
}

export default function Home() {
  const { data, error, isLoading } = useSWR('https://api.example.com/data', fetcher)

  if (error) return <div>Failed to load</div>
    if (isLoading) return <div>Loading...</div>

    return (
        <div>{data.title}</div>
    )
}

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

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

در بلوک کد بالا، useSWR hook یک شی را با دو ویژگی برمی گرداند: data، error، و isLoading. اگر در واکشی داده ها خطایی رخ دهد، پیام «بارگیری نشد» را برمی گرداند. اگر داده ها هنوز بارگذاری نشده باشند، پیغام Loading… را برمی گرداند.

همچنین می توانید یک شی پیکربندی را به عنوان آرگومان دوم به آن ارسال کنید useSWR قلاب. این شی به شما اجازه می دهد تا نحوه سفارشی سازی را انجام دهید SWR واکشی و ذخیره اطلاعات را مدیریت می کند.

رسیدگی به اعتبار مجدد خودکار

یکی از ویژگی های اساسی کتابخانه SWR توانایی آن در اعتبارسنجی مجدد داده های قدیمی به طور خودکار است. این revalidateOnFocus، refreshInterval، و revalidatOnReconnect خواص مسئول این توانایی هستند. این revalidateOnFocus تضمین می کند که وقتی کاربر دوباره روی صفحه وب شما تمرکز می کند یا بین برگه ها جابجا می شود، کتابخانه SWR درخواست واکشی دیگری را به API ارائه می دهد.

به طور پیش فرض، revalidateOnFocus ویژگی فعال است برای خاموش کردن آن، تنظیم کنید revalidateOnFocus دارایی به نادرست.

اینطوری:

const { data, error, isLoading } = useSWR('https://api.example.com/data', fetcher, 
{ revalidateOnFocus: false }
)
وارد حالت تمام صفحه شوید

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

این revalidateOnReconnect این گزینه تضمین می‌کند که SWR داده‌ها را هر زمان که کاربر پس از از دست دادن اینترنت دوباره به اینترنت متصل شود، مجدداً تأیید می‌کند. این در شرایط خاصی بسیار مفید است، اما در مواردی که غیر ضروری است، می توانید آن را غیرفعال کنید.

برای غیر فعال کردن آن، شما را تنظیم کنید revalidateOnReconnect دارایی به نادرست:

const { data, error, isLoading } = useSWR('https://api.example.com/data', fetcher, 
    { revalidateOnReconnect: false }
)
وارد حالت تمام صفحه شوید

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

با استفاده از refreshInterval ویژگی. این refreshInterval ویژگی یک بازه زمانی بر حسب میلی ثانیه است که تعیین می کند داده های شما هر چند وقت یکبار از یک API واکشی می شود. مقدار پیش فرض 0 است.

تنظیم کردن refreshInterval به یک مقدار مثبت تضمین می کند که داده ها در بازه زمانی مشخص شده دوباره واکشی می شوند.

اینطوری:

const { data, error, isLoading } = useSWR('https://api.example.com/data', fetcher, 
    { refreshInterval: 5000 }
)
وارد حالت تمام صفحه شوید

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

در مواردی که داده‌هایی که از API واکشی می‌کنید ثابت می‌مانند، تأیید مجدد آن هیچ تغییری ایجاد نمی‌کند. در چنین مواردی، ویژگی اعتبار سنجی مجدد خودکار کتابخانه SWR غیر ضروری است. بهتر است آن را غیرفعال کنید. برای غیرفعال کردن ویژگی اعتبار سنجی مجدد خودکار، شما را تنظیم کنید revalidateOnFocus و revalidateOnReconnect خواص را نادرست و رها کنید refreshInterval در 0.

یکی دیگر از روش‌های غیرفعال کردن اعتبار مجدد خودکار، استفاده از آن است useSWRImmutable قلاب به جای معمولی useSWR قلاب برای واکشی داده ها این useSWRImutable قلاب یکسان است useSWR قلاب اما راهی کارآمد برای مدیریت داده های تغییرناپذیر ارائه می دهد. از آن استفاده می کند useSWR قلاب داخلی برای واکشی و اعتبارسنجی مجدد داده ها و اطمینان از اینکه داده ها بین رندرها بدون تغییر باقی می مانند.

مثلا:

import useSWRImmutable from 'swr/immutable'

const { data, error, isLoading } = useSWRImmutable('https://api.example.com/data', fetcher)
وارد حالت تمام صفحه شوید

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

نتیجه

SWR یک کتابخانه عالی برای واکشی و ذخیره سازی داده ها در برنامه Next.js شما است. استفاده از آن آسان است، قابل تنظیم است و ویژگی هایی مانند اعتبار سنجی مجدد و خودکار را ارائه می دهد، که آن را به انتخابی عالی برای هر برنامه Next.js که نیاز به واکشی داده ها از یک API دارد، تبدیل می کند. این مقاله به شما کمک می کند SWR را در پروژه Next.js بعدی خود ادغام کنید.

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

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

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

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