🔄 مميز

Recoil

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

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

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

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

📖 الوصف

Recoil هي مكتبة لإدارة الحالة من Facebook (Meta) تستخدم نهج "الذرات" (atoms) بدلاً من store مركزي. كل atom هو قطعة مستقلة من state يمكن اشتراك components فيها بشكل منفصل. يوفر نهجاً جديداً لإدارة الحالة في React بدون boilerplate. Recoil يدعم state derivation (selectors)، async state (waitFor)، وsta...

🎯 يستخدم في

مجالات استخدام هذه الأداة

إدارة الحالة في تطبيقات React

State management مع derived values

Async state management

State sharing بين components

بديل لـ Redux مع نهج مختلف

المميزات

أبرز مميزات هذه الأداة

نهج الذرات (atoms) بدلاً من store مركزي

Selectors للـ derived state

Async state management (waitFor)

Performance ممتاز (fine-grained updates)

API شبيهة بـ React hooks

Concurrent Mode support

State persistence مع effects

⚠️ العيوب

نقاط يجب مراعاتها

×

محدود لـ React

×

لا يزال experimental (رغم الاستقرار)

×

مجتمع أصغر من Redux

×

أقل middleware من Redux

×

أقل شهرة من Zustand

🔄 البدائل

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

Jotai
Zustand
Redux Toolkit

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

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

Example Code
import { atom, selector, useRecoilState, useRecoilValue } from 'recoil';

// Atom
const counterState = atom({
  key: 'counter',
  default: 0,
});

// Selector (derived state)
const doubledCounterState = selector({
  key: 'doubledCounter',
  get: ({ get }) => get(counterState) * 2,
});

// Async selector
const todosState = selector({
  key: 'todos',
  get: async () => {
    const response = await fetch('/api/todos');
    return response.json();
  },
});

// Counter component
function Counter() {
  const [count, setCount] = useRecoilState(counterState);
  const doubled = useRecoilValue(doubledCounterState);

  return (
    <div>
      <p>العدد: {count}</p>
      <p>المضاعف: {doubled}</p>
      <button onClick={() => setCount(c => c + 1)}>زيادة</button>
    </div>
  );
}

// App.tsx
import { RecoilRoot } from 'recoil';

function App() {
  return (
    <RecoilRoot>
      <Counter />
      <TodosList />
    </RecoilRoot>
  );
}

📚 أدوات أخرى في State-Management

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