0
سبد خرید من 0 دوره
سبد خرید شما خالیست :(
پرسش

چطوری می‌تونم یه کوکی توی React تنظیم کنم؟

How can I set a cookie in React?

من دارم با React کار می‌کنم و می‌خوام یه کوکی توی مرورگر کاربر تنظیم کنم. روش درستی که بتونم این کار رو انجام بدم چیه؟ باید از کتابخونه خاصی استفاده کنم یا می‌تونم مستقیم این کار رو بکنم؟ چطوری می‌تونم به کوکی‌هایی که تنظیم کردم دسترسی داشته باشم و اونا رو بخونم؟

1403/06/06
پاسخ
محمدامین سعیدی راد
بیوگرافی محمدامین سعیدی راد

برای تنظیم کوکی توی React، ساده‌ترین راه استفاده از کتابخونه js-cookie هست که کار رو خیلی راحت می‌کنه. با این کتابخونه هم می‌تونی کوکی‌ها رو تنظیم کنی، هم بخونی و هم پاکشون کنی. البته اگه نخوای از کتابخونه استفاده کنی، می‌تونی از جاوااسکریپت خالص هم برای این کار استفاده کنی، ولی استفاده از js-cookie خیلی راحت‌تر و مطمئن‌تره.

استفاده از کتابخونه js-cookie:

اول باید این کتابخونه رو نصب کنی:

npm install js-cookie

بعد از نصب، می‌تونی ازش استفاده کنی:

import Cookies from 'js-cookie';
Cookies.set('cookieName', 'cookieValue', { expires: 7 }); // Set a cookie
const cookieValue = Cookies.get('cookieName'); // return a cookie
Cookies.remove('cookieName'); // Remove a cookie

استفاده از جاوااسکریپت خالص:

اگه نخوای از js-cookie استفاده کنی، می‌تونی به این شکل کوکی تنظیم کنی:

// Set cookie
document.cookie = "cookieName=cookieValue; expires=Fri, 31 Dec 2024 12:00:00 UTC; path=/";
// Read Cookie
const getCookie = (name) => {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
};
// Remove a cookie
document.cookie = "cookieName=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

توضیحات اضافه:

توی کد بالا، Cookies.set کوکی رو تنظیم می‌کنه و با استفاده از گزینه expires می‌تونی مدت زمان اعتبار کوکی رو تعیین کنی. با Cookies.get می‌تونی به کوکی دسترسی پیدا کنی و با Cookies.remove اون رو پاک کنی.

اگه بخوای از جاوااسکریپت خالص استفاده کنی، باید زمان انقضای کوکی رو خودت به صورت دستی تنظیم کنی که همون‌طور که می‌بینی کمی پیچیده‌تره.

در کل، پیشنهاد می‌کنم برای راحتی و اطمینان بیشتر، از کتابخونه js-cookie استفاده کنی

پاسخ: 1403/06/06
آخرین آپدیت: 1403/08/15