حتما درباره localStorage مقالات زیادی خواندین یا ویدئوهای زیادی دیدین اما هنوز گیج باشید! بیایید عمیقتر بررسی کنیم.

لوکال استوریج یکی از سادهترین روشها برای ذخیره دادهها به صورت ماندگار در مرورگر است. این دادهها به شکل key-value ذخیره میشوند (همیشه به صورت رشته متنی) و حتی پس از بستن، رفرش یا باز کردن مجدد مرورگر باقی میمانند.
بنابراین لوکال استوریج به صورت گلوبال در مرورگر windows یک ویژگی داخلی شیء قابل دسترسی است.
قبل از عمیقتر شدن در لوکال استوریج تفاوتش رو با روشهای دیگر ذخیره داده مقایسه کنیم:
سشن استوریج (sessionStorage): شبیه به لوکال استوریج است، اما فقط تا زمانی که تب باز باشد، داده را نگه میدارد.
کوکی: دادههای کمی را ذخیره میکنند و با هر درخواست HTTP ارسال میشوند.

حالا متوجه شدید که لوکال استوریج معمولاً برای ذخیره دادههایی استفاده میشود که باید به صورت دائمی در مرورگر کاربر باقی بمانند و نیازی به ارسال با هر درخواست سرور ندارند.
لوکال استوریج یگ API ساده برای ذخیره، دریافت و حذف دادهها فراهم میکند.
localStorage.setItem("username", "JohnDoe");
const user = localStorage.getItem("username");
console.log(user); // خروجی: JohnDoe
localStorage.removeItem("username");
localStorage.clear();
میخوام در این قسمت یه مثال خیلی کاربردی و ساده از لوکال استوریج بهتون نشون بدم، مثال برای ذخیره تم روشن/ تیره هست. (حتی میتونی کد رو در برنامه ویرایش کد خودت کپی کنی و راحت تست کنی).
import React, { useState, useEffect } from "react"
function ThemeSwitcher() {
const [theme, setTheme] = useState(localStorage.getItem("theme") || "light");
useEffect(() => {
localStorage.setItem("theme", theme);
}, [theme]);
const toggleTheme = () => {
setTheme(theme === "light" ? "dark" : "light");
};
return (
<div style={{ background: theme === "light" ? "#fff" : "#333", color: theme === "light" ? "#000" : "#fff", padding: "20px" }}>
<p>تم فعلی: {theme}</p>
<button ={toggleTheme}>تغییر تم</button>
</div>
);
}
export default ThemeSwitcher;
توضیح کد: این کد تم انتخابی کاربر را در لوکال استوریج ذخیره میکند. اگر صفحه رفرش شود، تم همچنان باقی میماند.

اینم از خروجی کار.
لوکال استوریج به ما اجازه میدهد دادههایی که نیازی به ارسال به سرور ندارند، سریع و بهینه ذخیره کنیم. این موضوع به بهبود تجربه کاربری و کاهش فشار روی سرور کمک میکند.
چرا مهم است؟
setItem، getItem و removeItem برای مدیریت دادهها کافیاند.لوکال استوریج یک ابزار قدرتمند برای ذخیره دادههای سمت کلاینت است که در جاوا اسکریپت و ریاکت کاربرد زیادی دارد. اما نباید از آن برای اطلاعات حساس استفاده کرد.
اگر نیاز به راهحلهای پیشرفتهتر دارید نگاه کردن به Redux Persist یا IndexedDB خالی از لطف نیست.
اینم از اولین مقاله من در وبسایت ویرگول. پذیرای انتقاد و نظرات شما هستم. :))