ما هو Vuex وما هي استخداماته

Vuex هي مكتبة لإدارة الحالة لتطبيقات Vue.js. وهي توفر مخزنًا مركزيًا لجميع المكونات في التطبيق، مما يتيح لك إدارة حالة التطبيق بطريقة متسقة وقابلة للتنبؤ. تم تصميم Vuex للعمل بسلاسة مع Vue.js وهو مفيد بشكل خاص في التطبيقات واسعة النطاق حيث يمكن أن تصبح إدارة الحالة عبر مكونات متعددة معقدة.

المفاهيم الأساسية لـ Vuex

يدور Vuex حول عدد قليل من المفاهيم الأساسية التي تساعد في إدارة حالة التطبيق بشكل فعال:

  • المتجر: المستودع المركزي لحالة التطبيق. فهو يحتفظ بالبيانات ويسمح للمكونات بالوصول إليها وتحديثها.
  • الحالة: البيانات المخزنة في مخزن Vuex. وهي تمثل حالة التطبيق التي يمكن مشاركتها عبر المكونات.
  • Getters: الدوال التي تسترد وتحسب الحالة المشتقة بناءً على حالة المتجر. وهي تشبه الخصائص المحسوبة في مكونات Vue.
  • الطفرات: الوظائف التي تعدل الحالة. يجب أن تكون الطفرات متزامنة وهي الطريقة الوحيدة لتغيير الحالة في Vuex.
  • الإجراءات: الوظائف التي يمكنها تنفيذ عمليات غير متزامنة وتنفيذ الطفرات. يمكن استخدام الإجراءات للتعامل مع المنطق المعقد والآثار الجانبية.
  • الوحدات النمطية: طريقة لتنظيم متاجر Vuex إلى أجزاء أصغر يمكن إدارتها. يمكن أن تحتوي كل وحدة نمطية على حالتها الخاصة، وطفراتها، وأفعالها، ومعاملاتها.

إعداد Vuex في مشروع Vue.js

لاستخدام Vuex في مشروع Vue.js الخاص بك، اتبع الخطوات التالية:

  1. تثبيت Vuex: أولاً، تحتاج إلى تثبيت Vuex عبر npm. قم بتشغيل الأمر التالي في دليل المشروع الخاص بك:
npm install vuex
  1. إنشاء متجر Vuex: أنشئ ملفًا جديدًا باسم store.js في الدليل src الخاص بك. حدد متجر Vuex الخاص بك في هذا الملف:
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  },
  actions: {
    increment({ commit }) {
      commit('increment');
    }
  },
  getters: {
    count: state => state.count
  }
});

في هذا المثال، يحتوي المتجر على حالة مع خاصية count، وطفرة لزيادة العدد، وإجراء لتأكيد الطفرة، ووسيلة الحصول لاسترداد العدد.

  1. دمج Vuex مع تطبيق Vue الخاص بك: افتح src/main.js واستورد متجر Vuex. أضفه إلى مثيل Vue:
import Vue from 'vue';
import App from './App.vue';
import store from './store';

new Vue({
  el: '#app',
  store,
  render: h => h(App)
});

استخدام Vuex في مكونات Vue

بمجرد دمج Vuex، يمكنك الوصول إلى حالة المتجر والطفرات والإجراءات داخل مكونات Vue الخاصة بك. فيما يلي مثال لكيفية استخدام Vuex في أحد المكونات:

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
export default {
  computed: {
    count() {
      return this.$store.getters.count;
    }
  },
  methods: {
    increment() {
      this.$store.dispatch('increment');
    }
  }
};
</script>

في هذا المكون:

  • الخاصية المحسوبة: تقوم الخاصية المحسوبة count باسترجاع العدد الحالي من متجر Vuex باستخدام getter.
  • الطريقة: ترسل طريقة increment الإجراء increment لتحديث الحالة.

متى تستخدم Vuex

يعد Vuex مفيدًا بشكل خاص في السيناريوهات التالية:

  • التطبيقات واسعة النطاق: عندما يصبح إدارة الحالة المعقدة عبر مكونات متعددة أمرًا صعبًا.
  • الحالة المشتركة: عندما تحتاج إلى مشاركة الحالة بين مكونات أو وجهات نظر مختلفة.
  • إدارة الحالة المعقدة: عندما تحتاج إلى تنفيذ عمليات غير متزامنة أو طفرات حالة معقدة.

خاتمة

Vuex هي أداة قوية لإدارة الحالة في تطبيقات Vue.js. فهي توفر مخزنًا مركزيًا ومجموعة من المبادئ للتعامل مع تغييرات الحالة بطريقة يمكن التنبؤ بها ومنظمة. من خلال فهم Vuex والاستفادة منه، يمكنك إدارة حالة التطبيق بفعالية، مما يجعل من الأسهل إنشاء تطبيقات Vue.js المعقدة وصيانتها.