📋 محتويات الصفحة
📖 الوصف
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
🔄 البدائل
أدوات بديلة يمكنك استخدامها
💻 مثال على الاستخدام
كيفية استخدام هذه الأداة
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
قد يعجبك أيضاً
Effector
مكتبة إدارة حالة reactive (Reactive State Management)
Jotai
⭐مكتبة إدارة حالة ذرية (Atomic State Management)
MobX
⭐مكتبة إدارة حالة تفاعلية (Reactive State Management)
Nano Stores
مكتبة إدارة حالة خفيفة (Tiny State Manager)
NgRx
⭐مكتبة إدارة الحالة لـ Angular (Angular State Management)
Pinia
⭐مكتبة إدارة الحالة الرسمية لـ Vue (Vue State Management)