وقتی یک اپلیکیشن Vue رشد میکند، انتقال داده از طریق props و event میان کامپوننتهای دور از هم بهسرعت شکننده میشود. Pinia کتابخانهٔ رسمی مدیریت حالت برای Vue ۳ است که یک منبع حقیقت مرکزی فراهم میکند. در مقایسه با Vuex، API سادهتری دارد، با TypeScript بهخوبی کار میکند و در Nuxt بهصورت خودکار یکپارچه میشود.
هر store در Pinia سه بخش دارد: state برای داده، getters برای مقادیر مشتقشده و actions برای منطق و تغییر حالت. توصیهٔ ما این است که store را بر اساس دامنهٔ کسبوکار تقسیم کنید — مثلاً store کاربر، store سبد خرید و store تنظیمات — نه یک store غولپیکر که همهچیز در آن جمع شده باشد. این تفکیک، نگهداری و تست را ساده میکند.
در محیط SSR نکتهٔ ظریفی وجود دارد؛ state نباید میان درخواستهای مختلف کاربران نشت کند. Nuxt با تعریف store بهصورت تابع، برای هر درخواست یک نمونهٔ تازه میسازد و حالت اولیه را بهدرستی از سرور به کلاینت منتقل میکند. همین رفتار، نوشتن کد امن در رندر سمت سرور را بدون دردسر ممکن میسازد.
همهچیز لازم نیست در store باشد. حالتی که فقط به یک کامپوننت تعلق دارد، باید همانجا با ref محلی بماند. store برای دادهای است که واقعاً میان چند بخش مشترک است؛ مثل اطلاعات کاربر لاگینشده. پرکردن بیرویهٔ store، آن را به یک متغیر سراسری شلوغ تبدیل میکند و همان مشکلی را برمیگرداند که قرار بود حل کند.