📋 محتويات الصفحة
📖 الوصف
MobX هي مكتبة لإدارة الحالة تعتمد على "transparent functional reactive programming" (TFRP). تستخدم observable values و reactions لتحديث الواجهة تلقائياً عند تغيير البيانات. يُقدم نهجاً مختلفاً عن Redux – لا reducers أو actions، فقط observable data. MobX يركز على تجربة تطوير سلسة مع أقل boilerplate ...
🎯 يستخدم في
مجالات استخدام هذه الأداة
State management في React (mobx-react)
State sharing بين components
تطبيقات معقدة مع state كبير
بديل لـ Redux بدون boilerplate
✨ المميزات
أبرز مميزات هذه الأداة
API بسيط جداً (makeAutoObservable)
لا reducers أو actions (mutations مباشرة)
Performance ممتاز (fine-grained tracking)
TypeScript support ممتاز
mobx-react للتكامل مع React
Computed values للتبعيات
Effects ( reactions) للمعالجة الجانبية
⚠️ العيوب
نقاط يجب مراعاتها
Magic يحدث خلف الكواليس (صعوبة debugging)
أقل شفافية من Redux
لا time-travel debugging
أداء جيد لكن أقل من Zustand أحياناً
أقل شهرة من Redux/Zustand
🔄 البدائل
أدوات بديلة يمكنك استخدامها
💻 مثال على الاستخدام
كيفية استخدام هذه الأداة
import { makeAutoObservable } from 'mobx';
import { observer } from 'mobx-react-lite';
class TodoStore {
todos: Todo[] = [];
constructor() {
makeAutoObservable(this);
}
addTodo(text: string) {
this.todos.push({ id: Date.now(), text, completed: false });
}
toggleTodo(id: number) {
const todo = this.todos.find(t => t.id === id);
if (todo) todo.completed = !todo.completed;
}
get completedTodos() {
return this.todos.filter(t => t.completed);
}
get activeTodos() {
return this.todos.filter(t => !t.completed);
}
}
const store = new TodoStore();
// React component
const TodoList = observer(() => {
return (
<div>
<h2>المهام ({store.activeTodos.length})</h2>
<ul>
{store.todos.map(todo => (
<li
key={todo.id}
onClick={() => store.toggleTodo(todo.id)}
style={{ textDecoration: todo.completed ? 'line-through' : 'none' }}
>
{todo.text}
</li>
))}
</ul>
<p>مكتمل: {store.completedTodos.length}</p>
</div>
);
});
📚 أدوات أخرى في State-Management
قد يعجبك أيضاً
Effector
مكتبة إدارة حالة reactive (Reactive State Management)
Jotai
⭐مكتبة إدارة حالة ذرية (Atomic State Management)
Nano Stores
مكتبة إدارة حالة خفيفة (Tiny State Manager)
NgRx
⭐مكتبة إدارة الحالة لـ Angular (Angular State Management)
Pinia
⭐مكتبة إدارة الحالة الرسمية لـ Vue (Vue State Management)
Recoil
⭐مكتبة إدارة حالة ذرية (Atomic State Management)