📋 محتويات الصفحة
📖 الوصف
Jotai هي مكتبة لإدارة الحالة في React تعتمد على نهج "bottom-up" مع الذرات (atoms). تشبه Recoil لكن أبسط وأخف. توفر نهجاً minimalistic للتعاون بين المكونات عبر state مشترك. Jotai مشتقة من كلمة "state" بالعربية (状態). تُقدم API بسيط جداً: `atom` و `useAtom`. لا تحتاج Provider (رغم أنه ممكن) وتدعم Type...
🎯 يستخدم في
مجالات استخدام هذه الأداة
State management في React
State management مع derived values
State sharing بين components
بديل خفيف لـ Redux/Zustand
Applications تتطلب أداء عالي
✨ المميزات
أبرز مميزات هذه الأداة
API بسيط جداً (atom + useAtom)
خفيفة جداً (~3KB)
Performance ممتاز (fine-grained updates)
Derived atoms (مثل selectors)
Async atoms مدمج
TypeScript inference ممتاز
No Provider required (optional)
Utilities (storage
devtools
immer)
⚠️ العيوب
نقاط يجب مراعاتها
محدود لـ React
أصغر ecosystem من Redux
أقل middleware من Redux
قد يكون صعب للمبتدئين (conceptual)
أقل شهرة من Zustand
🔄 البدائل
أدوات بديلة يمكنك استخدامها
💻 مثال على الاستخدام
كيفية استخدام هذه الأداة
import { atom, useAtom } from 'jotai';
import { atomWithStorage } from 'jotai/utils';
// Basic atom
const countAtom = atom(0);
// Derived atom (read-only)
const doubledAtom = atom((get) => get(countAtom) * 2);
// Async atom
const userAtom = atom(async (get) => {
const userId = get(currentUserIdAtom);
const response = await fetch(`/api/users/${userId}`);
return response.json();
});
// Atom with localStorage persistence
const themeAtom = atomWithStorage('theme', 'light');
// Counter component
function Counter() {
const [count, setCount] = useAtom(countAtom);
const [doubled] = useAtom(doubledAtom);
return (
<div>
<p>العدد: {count}</p>
<p>المضاعف: {doubled}</p>
<button onClick={() => setCount(c => c + 1)}>زيادة</button>
</div>
);
}
// App.tsx
import { Provider } from 'jotai';
function App() {
return (
<Provider>
<Counter />
</Provider>
);
}
📚 أدوات أخرى في State-Management
قد يعجبك أيضاً
Effector
مكتبة إدارة حالة reactive (Reactive State Management)
MobX
⭐مكتبة إدارة حالة تفاعلية (Reactive State Management)
Nano Stores
مكتبة إدارة حالة خفيفة (Tiny State Manager)
NgRx
⭐مكتبة إدارة الحالة لـ Angular (Angular State Management)
Pinia
⭐مكتبة إدارة الحالة الرسمية لـ Vue (Vue State Management)
Recoil
⭐مكتبة إدارة حالة ذرية (Atomic State Management)