
تناقش هذه المقالة خطأ شائعًا يرتكبه معظم المبتدئين عند تطوير تطبيق على Vue + Vuex. سنتحدث عن الحروف وكيفية استخدامها بشكل صحيح. ونحن ننظر أيضا في وظائف المساعد mapState و mapGetters.
قبل القراءة: من المستحسن أن يكون لديك معرفة أساسية عن Vue و Vuex.
الفصل 1. ما هي getters. مثال استخدام غير مناسب
تمثل Getters جزءًا من مستودع Vuex الذي يُرجع بيانات محسوبة عن الحالة الحالية لمستودع التخزين إلى مكوناتنا.
النظر في مثال:
const store = new Vuex.Store({ state: {
سيبدو هذا وكأنه مكون مع قائمة بجميع الكتب:
export default { computed: {
المثال أعلاه يعمل ، لكنه لا يستحق كل هذا العناء. مع هذا النهج ، نحن الزائد التطبيق.
إذا كنت بحاجة إلى إخراج البيانات مباشرة من التخزين إلى المكون دون أي تعديلات ، فليس getters هو الحل الأفضل. بعد ذلك ، سأوضح كيف يمكنك تحسين الرمز والتخلص من الاستخدام غير المناسب للأحرف.
الفصل 2. استخدام mapState لاسترداد البيانات من التخزين
تقرأ الوثائق :
عندما يحتاج أحد المكونات إلى استخدام العديد من الخصائص أو أدوات المستودع ، قد يكون الإعلان عن كل هذه الخصائص المحسوبة مملاً. في مثل هذه الحالات ، يمكنك استخدام وظيفة mapState ، التي تنشئ الخصائص المحسوبة تلقائيًا.
دعنا نعود إلى مكوننا واستخدام mapState بدلاً من getter:
import { mapState } from 'vuex'; export default { computed: { ...mapState([ 'books' ]) } }
يمكن حذف getter من المستودع ، لأنه نحن لسنا بحاجة إليه بعد الآن:
const store = new Vuex.Store({ state: {
أكثر ملاءمة ، أليس كذلك؟ لقد تخلصنا من الأخطاء غير الضرورية وقللنا من حجم الشفرة.
الفصل 3. لماذا getters ، إذا كان هناك mapState
وما زالت هناك حاجة إليها. تُستخدم الحروف في الحالات التي تحتاج فيها إلى عرض المعلومات المعدلة من المستودع (على سبيل المثال ، قائمة بجميع الكتب المقروءة ).
دعنا ننشئ منشأ للحصول على جميع الكتب التي تقرأ من المستودع:
const store = new Vuex.Store({ state: {
الآن سيبدو مكوننا كما يلي:
import { mapState } from 'vuex'; export default { computed: {
يمكن للمرء أن يتوقف عند هذا ، ولكن هناك شيء مفيد آخر يستحق المعرفة. إذا كنت بحاجة إلى إعادة استخدام نفس getter في مكونات مختلفة ، فقد لا يكون من المناسب للغاية كتابة الحروف في كل مرة بالطريقة المحسوبة. MapGetters يأتي لانقاذ .
لنلقِ نظرة على مثال:
التحسن واضح: باستخدام mapGetters قللنا مقدار الشفرة.
يمكنك أيضًا حساب المعلومات من المستودع استنادًا إلى بعض البيانات ، على سبيل المثال ، الحصول على كتاب بمعرفه أو اسمه. ويمكن تحقيق ذلك عن طريق تمرير حجة لدينا getter.
const store = new Vuex.Store({ state: {
import { mapState, mapGetters } from 'vuex'; export default { computed: { ...mapState([ 'books' ]), ...mapGetters([ 'finishedBooks', 'getBookById' ]), getBook() {
إبزيم المواد
- استخدم الحروف عندما تحتاج إلى عرض معلومات معدلة من المستودع (على سبيل المثال ، قائمة بجميع الكتب المقروءة) ، وفي حالات أخرى ، استخدم وظيفة مساعد mapState.
- يمكن تمريرها وسيطات إضافية لحساب البيانات استنادا إليها.
- يتم تحديث نتائج Getter عندما تتغير إحدى التبعيات.
وثائق getter باللغة الروسية
مثال التطبيق من مقال عن codepen