🔄 مميز

Jotai

مكتبة إدارة حالة ذرية (Atomic State Management)

(4/5)
👁️ 4 مشاهدة
📅 02 Jul 2026
⚛️ React

مستوى الخبرة المطلوب:

🌱 مبتدئ ⚡ متوسط 🚀 محترف 🏢 مؤسسي
🔗 زيارة الموقع الرسمي
4
تقييم المستخدمين
التصنيف 🔄 State-Management
المشاهدات 4
تاريخ الإضافة 02/07/2026
آخر تحديث 02/07/2026

📖 الوصف

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

🔄 البدائل

أدوات بديلة يمكنك استخدامها

Recoil
Zustand
Redux Toolkit

💻 مثال على الاستخدام

كيفية استخدام هذه الأداة

Example Code
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

قد يعجبك أيضاً