🔄 مميز

MobX

مكتبة إدارة حالة تفاعلية (Reactive State Management)

(4/5)
👁️ 4 مشاهدة
📅 02 Jul 2026
⚛️ React 💚 Vue.js 🅰️ Angular 🧡 Svelte 🌐 عام

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

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

📖 الوصف

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

🔄 البدائل

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

Redux Toolkit
Zustand
Valtio

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

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

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

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