I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

إدارة الحالة (State Management) في تطبيقات Laravel Inertia.. هل لسه محتاج Redux أو Vuex؟

إدارة الحالة (State Management) في تطبيقات Laravel Inertia.. هل لسه محتاج Redux أو Vuex؟ لو أنت مبرمج بتستخدم Laravel ومعاك Inertia.js في الفرونت إيند، أكيد جه

إدارة الحالة (State Management) في تطبيقات Laravel Inertia.. هل لسه محتاج Redux أو Vuex؟
Reading Count: 3

إدارة الحالة (State Management) في تطبيقات Laravel Inertia.. هل لسه محتاج Redux أو Vuex؟

لو أنت مبرمج بتستخدم Laravel ومعاك Inertia.js في الفرونت إيند، أكيد جه في بالك السؤال الوجودي ده: "يا جماعة، هو أنا محتاج أركب Vuex أو Pinia عشان أدير الـ State في تطبيقي؟ ولا الدنيا أسهل من كدة؟". دايماً بنحس إننا تايهين بين تعقيد الـ SPA التقليدي (Single Page Application) وبين بساطة الـ Monolith، النهاردة هنفك الاشتباك ده ونعرف إزاي تتدير حالتك باحترافية من غير وجع دماغ.

إيه هي فلسفة Inertia في التعامل مع البيانات؟

في الـ SPA التقليدي زي React أو Vue مع API، أنت بتضطر تعمل API مخصوص عشان تجيب البيانات، وبعدين تخزنها في Global Store زي Redux أو Vuex عشان تشاركها بين المكونات (Components). بس مع Inertia، اللعبة اتغيرت خالص. Inertia بتبعتلك الـ Props مباشرة من الـ Controller للـ Component بتاعك. يعني الداتا بتبقى "موجودة" في الـ Component بمجرد ما الصفحة تحمل.

الفرق الجوهري: ليه مش محتاج تعقيدات الـ State Management؟

مع Inertia، الـ Server هو اللي بيتحكم في الـ State. لما بتعمل انتقال بين الصفحات (Page Visits)، الـ Controller بيبعت الـ Data اللي محتاجها للـ Component ده. مفيش حاجة اسمها "إني محتاج أعمل Fetch للداتا من الـ Frontend"، لأن الداتا جاية جاهزة من الـ Backend. ده بيخلي الـ State Management المعقد ملوش لازمة في 90% من الحالات.

إزاي بتبعت الـ State من الـ Controller للـ Frontend؟

الموضوع أبسط مما تتخيل. في الـ Controller، بتستخدم Inertia::render عشان تبعت أي داتا محتاجها. بص على المثال ده:


// UserController.php
public function show($id)
{
    $user = User::findOrFail($id);
    return Inertia::render('Users/Show', [
        'user' => $user
    ]);
}

في الناحية التانية، في الـ Vue Component، الداتا دي بتوصلك في الـ Props:


// Users/Show.vue
<script setup>
defineProps({
    user: Object
});
</script>

<template>
    <div>
        <h1>{{ user.name }}</h1>
    </div>
</template>

إمتى فعلاً تحتاج State Management في Inertia؟

طبعاً مش دايماً الـ Props بتكون هي الحل الوحيد. لو عندك "حالة مؤقتة" زي (Modal Open/Close) أو (Form Wizard) أو بيانات محتاجة تفضل موجودة بين الـ Navigation، هنا ممكن تستخدم Shared Data في Inertia. تقدر تشارك بيانات على مستوى التطبيق كله من خلال HandleInertiaRequests Middleware، زي بيانات المستخدم المسجل (Auth User) أو رسائل الـ Flash Messages.

ولو فعلاً وصلت لحالة إن عندك State معقدة جداً جوه الـ Component الواحد، فـ Pinia (في Vue) أو React Context (في React) هي أدوات كافية جداً، ومحتاجش تروح لـ Redux أو تعقيدات الـ Boilerplate.

نصيحة من أخ لمبرمج زيه

يا صديقي، نصيحتي ليك: ما تحاولش تعمل "Over-engineering". ميزة Inertia الكبيرة هي البساطة. حاول دايماً تخلي الـ State بتاعك في الـ Backend على قد ما تقدر. كل ما قللت كمية الـ JavaScript اللي بتدير الـ State في المتصفح، كل ما كان تطبيقك أسرع، أسهل في الـ Debugging، وأقل في البق (Bugs). ابدأ بالبساطة، ولو لقيت نفسك محتاج Store فعلاً، ابدأ بـ Pinia، هتلاقيها خفيفة وزي الفل.

اتعلم أساسيات Laravel Request Lifecycle، وافهم إزاي Inertia بتعمل الـ Sync بين الـ Backend والـ Frontend، وهتلاقي نفسك بتبني تطبيقات ضخمة من غير ما تلمس أي مكتبة State Management خارجية.


Share

Related posts

May 12, 2026 • 1 min read
Reading Count: 5
دليل احتراف Laravel مع Inertia و React: بناء تطبيقات Single Page بدون تعقيدات الـ API

دليل احتراف Laravel مع Inertia و React: بناء تطبيقات Single Page بدون تعقيدات الـ API كثير مننا كمبر...

May 12, 2026 • 1 min read
Reading Count: 7
ليه Inertia.js هي الحل السحري لمطوري Laravel؟

ليه Inertia.js هي الحل السحري لمطوري Laravel؟ لو أنت مطور لارافيل (Laravel)، أكيد مريت بالتجربة دي:...

May 11, 2026 • 1 min read
Reading Count: 7
ازاي تقضي على تقطيع الشاشة وتحسن أداء تطبيقات فلاتر (Flutter Performance & UI Jank)

ازاي تقضي على تقطيع الشاشة وتحسن أداء تطبيقات فلاتر (Flutter Performance & UI Jank) مين فينا مش...