🔄

Effector

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

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

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

🔗 زيارة الموقع الرسمي
3
تقييم المستخدمين
التصنيف 🔄 State-Management
المشاهدات 3
تاريخ الإضافة 02/07/2026
آخر تحديث 02/07/2026

📖 الوصف

Effector هي مكتبة لإدارة الحالة تعتمد على reactive primitives. تستخدم مفهوم "stores" و "events" مع reactive connections. تقدم أداءً ممتازاً وحجماً صغيراً (~8KB). Effector تتميز بـ framework-agnostic design و SSR support ممتاز. تدعم TypeScript بشكل كامل وتُقدم نهجاً مختلفاً عن Redux/MobX.

🎯 يستخدم في

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

State management في أي framework

State sharing كبير

Applications مع complex state logic

Multi-framework projects

Applications تتطلب أداء عالي

المميزات

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

Framework-agnostic (React

Vue

Svelte)

Reactive primitives (stores

events

effects)

Performance ممتاز

TypeScript inference ممتاز

SSR support مدمج

Small size (~8KB)

Computation (derived stores)

No boilerplate (مقارنة بـ Redux)

DevTools integration

⚠️ العيوب

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

×

مجتمع صغير

×

موارد تعليمية محدودة

×

مفهوم مختلف يحتاج تعلم

×

أقل plugins من Redux

×

Less job opportunities

🔄 البدائل

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

Redux Toolkit
Zustand
MobX

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

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

Example Code
import { createStore, createEvent, createEffect, sample } from 'effector';

// Events
const increment = createEvent();
const decrement = createEvent();
const fetchUser = createEvent<string>();

// Effect (async operation)
const fetchUserFx = createEffect(async (id: string) => {
  const response = await fetch(`/api/users/${id}`);
  return response.json();
});

// Store
const $count = createStore(0)
  .on(increment, (state) => state + 1)
  .on(decrement, (state) => state - 1);

const $user = createStore<User | null>(null)
  .on(fetchUserFx.doneData, (_, user) => user);

// Derived store
const $doubledCount = $count.map((count) => count * 2);

// Sample (connect events and stores)
sample({
  clock: fetchUser,
  target: fetchUserFx,
});

// React component
import { useUnit } from 'effector-react';

function Counter() {
  const count = useUnit($count);
  const doubled = useUnit($doubledCount);
  const [inc, dec] = useUnit([increment, decrement]);

  return (
    <div>
      <p>العدد: {count}</p>
      <p>المضاعف: {doubled}</p>
      <button onClick={inc}>زيادة</button>
      <button onClick={dec}>تقليل</button>
    </div>
  );
}

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

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