Table of Contents
ويمكن أن تصبح إدارة مشاريع وطنية معقدة ذات أثر سلبي، تحدياً سريعاً، حيث أن التطبيق ينمو في سمات وشاشات ومعاليات البيانات، فبدون استراتيجية واضحة، كثيراً ما تتحول إدارة الدولة إلى شبكة متشابكة من عمليات حفر الدعائم، وتشتت الدول المحلية، والبيانات غير المتسقة عبر المكونات.() وما زالت الحاوية الحكومية التي يمكن التنبؤ بها لتطبيقات جافاسك، تشكل حلاً متيناً لإحلال هذا.
ما هو (ريدوكس)؟
إن شركة " ريدكس " هي مكتبة ذات مصادر مفتوحة، استلهمت أصلا من " فلكس " ، وهي نمط هيكلي من صنع فيسبوك لتطبيقات على الشبكة على جانب العملاء، والغرض الرئيسي منها هو إدارة الحالة العالمية لتطبيقات ذات طابع واحد وغير قابل للتداول ويمكن التنبؤ به، وتفرض شركة " ريدو " تدفقا صارما موحدا للبيانات يجعل التغييرات الحكومية شفافة وسهلة الفهم.
- Single source of truth:] The entire application state is stored in one plain JavaScript object tree within a single store. This eliminates inconsistencies and simplifies debugging because there is only one place to look for the current state.
- State is read-only:] The only way to change the state is by sendinging an action, which is a plain JavaScript object that describes what happened. This ensures that no part of the UI can accidentally override the state.
- Changes are made with pure functions:] To specify how the state tree is transformed by actions, you write pure reducers. Reducers take the previous state and an action, and return the next state without mutating the previous state.
ويدور هيكل " ريدوكس " حول ثلاثة مباني رئيسية: المتجر، والإجراءات، والتخفيضات، ويحتفظ المتجر بالولاية ويوفر أساليب مثل ، ]، و.
لماذا تستخدم ريدوكس في ردة فعل Native؟
وكثيرا ما تنطوي التطبيقات الأصلية لإعادة التصنيع على تفاعلات معقدة عبر شاشات متعددة، وتحديثات في الوقت الحقيقي، ومعرفة الدول الموثقة المشتركة، وبيانات مأخوذة من نقاط نهاية عديدة من نظام المعلومات المسبقة عن علم، وتعالج شركة ريدكس هذه التحديات عن طريق إضفاء الطابع المركزي على إدارة الدولة، وجعل الهيكل أكثر تنظيما وقابلية للتنبؤ به، كما أن هذه الفوائد والأسباب الرئيسية لاعتماد نظام " ريدكس " في مشروع " رد الفعل " .
الدولة المركزية والقابلة للتنبؤ
ومع شركة ريدوكس، فإن جميع الطلبات في الدولة تعيش في متجر واحد، مما يجعل من السهل تتبع تغييرات الدولة عبر الزمن باستخدام أدوات مثل أجهزة الحفر الحمراء، التي توفر قطع الأشجار المسافرة زمنياً، وقطع الأشجار، وتفتيش الدولة، ويلغي هذا النهج المركزي الحاجة إلى نقل الدعائم عبر مستويات متعددة من الهرميات المكونة - نقطة ألم مشتركة في شركة React Native.
تحسين الخبرة في مجال الديون والتنمية
(ريدوكس ديفتول) يسمح لك بإعادة تمثيل الإجراءات، وفحص الدولة في أي وقت، وعودتك إلى الولايات السابقة، وهذا أمر لا غنى عنه عندما تكتشف الحشرات المعقدة ذات الصلة بالدولة، بالإضافة إلى أن الأعمال هي أشياء عادية وأجهزة خفض هي وظائف خالصة، وتكتب اختبارات الوحدة لمنطق الأعمال التجارية تصبح مباشرة، ويمكنك اختبار الإجراءات والتخفيضات في عزلة دون الحاجة إلى بيئة غير سليمة تماما.
Scalability for Large Teams
وفي مشاريع كبيرة تضم مطورين متعددين، يقوم برنامج " ريدو " بتنفيذ نمط ثابت لكيفية تدفق البيانات، ويمكن لأعضاء الفريق الجديد أن يفهموا الهيكل بسرعة عن طريق النظر إلى المتجر، والإجراءات، والتخفيضات، ويعني الفصل بين الشواغل بين عناصر وحدة التفتيش المشتركة ومنطق الدولة أن بإمكان المطورين العمل على مختلف أجزاء الطلب دون أن يخطوا على مدونة كل منهما.
دعم الآثار الجانبية وتدفقات العمل المتزامنة
وكثيرا ما تتفاعل التطبيقات المحلية التفاعلية مع أجهزة القياس المتطورة عن بعد أو التخزين المحلي أو السمات الخاصة بالأجهزة، ويسهل على الشبكة المتوسطة الحمراء مثل ريدوكس ثونك (للمنطق البسيط) وريدوكس ساغا (للتركيز المعقد) معالجة الآثار الجانبية بطريقة واضحة وقابلة للاختبار، ويعمل برنامج " ميدل " كخط أنابيب بين إرسال عمل ولحظة وصوله إلى المخفض، ويوفر موقعا مركزيا لمعالجة عمليات الكولينك.
Portability and Ecosystem
(أ) إن نظام " ريدكس " هو إطاري - تشخيصي ويمكن استخدامه مع الفانيلا جافاسكريبت، و " ريكت " ، و " إنكورال " ، و " فيو " ، و " ريدكس " ، و " فيدو " ، و " فيروس " ، بما يكفل استمرار المخزن في " أسينسستورج " أو غيره " .
بيد أن " ريدكس " يصاحب أيضاً رمزاً للتعلم والتعبئة، أما بالنسبة للتطبيقات الصغيرة أو البسيطة، فإن التعقيد الإضافي قد لا يكون مبرراً، وفي هذه الحالات، قد تكون مكتبات " رد الفعل " المبنية في سياقات محددة أو مكتبات إدارة الدولة ذات الوزن الخفيف مثل زوادس أو جوتاي أكثر ملاءمة، وينبغي أن يستند قرار استخدام " ريدوكس " إلى تعقيد المشروع وحجم الفريق واحتياجات الصيانة الطويلة الأجل.
تنفيذ برنامج " ريدكس " في مشروع " ريكت " المحلي
ويتضمن إدماج برنامج " ريدكس " في مشروع " وطني " سلسلة من الخطوات المحددة جيداً، ويُعدّ هذا المشروع لمحة عامة رفيعة المستوى عن العملية، إلى جانب الممارسات الموصى بها لاستخدام " ريدكس " العصري.
التركيب
بدءًا بتركيب مكتبة (ريدوكس) الأساسية و (الرد) الملزمة، إلى جانب مجموعة الأدوات الحمراء من أجل الإعداد المبسط:
npm install @reduxjs/toolkit react-redux
Reux Toolkit includes facilities like , , and that significantly reduce boilerplate and enforce best practices.
إنشاء المخزن
(د) إنشاء ملف (مثلاً، ) واستخدام لإنشاء المتجر، وهذا يجمع تلقائياً بين المخفضين ويضيف إلى الوسط مثل حمراء الثراء، ويتيح تطوير أجهزة الحفر.
import { configureStore } from '@reduxjs/toolkit';
import rootReducer from './reducers';
const store = configureStore({
reducer: rootReducer,
});
export default store;
تحديد الإجراءات والحد من الأسلحة
ويتيح لكم [المجموعة الحمراء] تحديد الإجراءات والتخفيض معاً في أحد القطع الموجزة، ويمثل كل شريحة مجالاً منطقياً لدولة التطبيق (مثل المستخدم والسيارات).
import { createSlice } from '@reduxjs/toolkit';
const userSlice = createSlice({
name: 'user',
initialState: { name: null, token: null },
reducers: {
setUser: (state, action) => {
state.name = action.payload.name;
state.token = action.payload.token;
},
clearUser: (state) => {
state.name = null;
state.token = null;
},
},
});
export const { setUser, clearUser } = userSlice.actions;
export default userSlice.reducer;
لأن (ريدوكس تولكيت) يستخدم مكتبة (إمر) داخلياً يمكنك كتابة منطق مخفض يبدو أنه يُغيّر الولاية مباشرةً، لكنه ينتج تحديثات غير قابلة للتشغيل.
ربط العناصر بالمخزن
وهناك طريقتان أوليتان لربط عناصر الصلاحية الوطنية بمخزن ريدوكس: الإرث HOC (عنصر أعلى) وخطاف الركتين العصرية ( و).
To read data from the store, use with a selector function:
import { useSelector } from 'react-redux';
const UserProfile = () => {
const userName = useSelector((state) => state.user.name);
return <Text>Hello, {userName}</Text>;
};
To send actions, use :
import { useDispatch } from 'react-redux';
import { clearUser } from './userSlice';
const LogoutButton = () => {
const dispatch = useDispatch();
return <Button title="Logout" onPress={() => dispatch(clearUser())} />;
};
وأخيراً، قم بتصفية عنصر الجذر التطبيقي الخاص بك مع عنصر ] من ريكريدوكس، وتمرر المتجر كدعارة:
import { Provider } from 'react-redux';
import store from './store';
const App = () => (
<Provider store={store}>
<MainNavigator />
</Provider>
);
أفضل الممارسات لاستخدام الريدوكس في المشاريع المعقدة
وعند العمل مع قواعد البيانات المحلية ذات الأثر الكبير، فإن اتباع ممارسات مثبتة أمر أساسي للحفاظ على جودة المدونة وأدائها، كما أن أفضل الممارسات الحاسمة، التي يشجعها دليل النموذج الأحمر الرسمي.
Normalize the State Shape
وينبغي أن تكون البيانات في متجر ريدكس مهيأة على شكل قاعدة بيانات: مسطحة ودون ازدواجية، مثلاً إذا كان لديك قائمة بالمناصب ومؤلفاتها، ووظائف تخزين ومؤلفات على حدة، وأن تحيلها إلى هويات مستقلة.
Use Redux Toolkit (RTK)
وحتى عام 2024، كانت مجموعة الأدوات الحمراء هي الطريقة الرسمية، التي تُعتبر مُطلية لكتابة منطق " ريدوكس " ، وهي تلغي معظم الفولربتيل المرتبط بـ " ريدوكس " التقليدي، وتشمل الدعم المبني من أجل تحديثات غير قابلة للتداول مع إيمر، وتُدمج دون هوادة مع " ريدوكس ديفتول " .
طقوس الخفض النقي
وعلى الرغم من أن مجموعة الأدوات الحمراء تسمح برمز متغير من خلال إيمر، ينبغي أن تظل المخفضات وظائف خالصة: يجب ألا تؤدي آثاراً جانبية أو أن تُسمي وظائف غير محظورة (مثلاً، ، ).
Leverage Middleware for Side Effects
(ج) استخدام الموجات المتوسطة لمعالجة المنطق غير المتنازع، أو المكالمات، أو قطع الأشجار، أو الإبلاغ عن حوادث التحطم، أو أي آثار جانبية أخرى، وريدوكس ثانك (المتضمنة بشركة RTK) يكفي لمعظم المشاريع، وبالنسبة لتدفقات العمل المعقدة التي تنطوي على تسلسلات، أو إلغاء، النظر في أمر إعادة التسلسل، والاحتفاظ بالمغذيات المتوسطة بمواد للتخفيضات النظيفة والقابلية للاختبار.
استخدام أجهزة التلقيح الآلية
بيانات عن المخزن باستخدام المختارين، وتذكرهم بمكتبة الانتقاء (المصدرة على أنها ] من @reduxjs/toolkit) - يمنع التطويق من إعادة الحساب غير الضروري عندما لا تتغير دولة المدخلات، وهذا أمر مهم بوجه خاص في شركة React Native لتجنب الجاك على أجهزة توليد الطاقة المنخفضة.
نوع المخزن مع النوع الممنوع
(أ) يضيف نظام " النيبستريت " شبكة أمان لإدارة ولاية (ريدوكس) يحدد شكل دولتك، وإجراءاتك، ومقلّصات من الأنواع الدقيقة، ويوفر نظام " ريدوكس توكيت " دعماً ممتازاً من النوع المفضّل، بما في ذلك الأنواع المُستدلّلة من الشقّعات والمخزن، ويلحق الكثير من الأخطاء في الوقت المناسب ويحسن إنتاجية المطورين.
قطع مخزن ممزقة من قبل منظمة " فليت "
(ج) تنظيم متجرك في شرائح منطقية (مثلاً، ، ، ]) بدلاً من القيام بدور تقني (الإجراءات، والمقلّدين، والثباتات) وهذا التجمع القائم على السمات يجعل قاعدة الرموز أسهل في الملاحة والاستمرار، ويمكن أن يكون لكل شريحة أيضاً منتقاتها وأغصانها.
إجراءات الاختبار والحد من المخاطر
ونظراً لأن المخفضين هم وظائف نقية، فإن اختبار الوحدة هو اختبار مباشر، وكتابة اختبارات تحقق من التحولات الحكومية الصحيحة لكل نوع من أنواع العمل، وبالنسبة للثروات أو المغاوير، فإن اختبارات التكامل التي تسخر من نظام المعلومات المسبقة عن البضائع وتتحقق من الإجراءات النهائية المرسلة لها هي نفس الأهمية، واستخدام الجيرست جنباً إلى جنب مع المكتبات مثل المكتبات الحمراء للاختبار.
الأداء على الوجه الأمثل
وفي مجال إعادة الاستخدام، يمكن أن ينتقص من خبرة المستخدمين في مجال إعادة التصنيع، وأن تضمن أن العناصر لا تعود إلى الظهور إلا عندما تتوقف شريحة الدولة على التغييرات بالضبط، وأن تستخدم مع المساواة الضحلة (عن طريق من الرد المتجدد] عند اختيار الأشياء، أو يفضل اختيار القيم البدائية.
الاعتبارات المسبقة
فإلى جانب القواعد الأساسية، كثيرا ما تتطلب التطبيقات العالمية الحقيقية سمات وأنماط إضافية، ويستكشف هذا الفرع مواضيع أكثر تقدما ذات صلة بمشاريع وطنية معقدة لإعادة التصنيع.
تدفق البيانات المتزامنة مع خلق AsyncThunk
وعندما تُحضر البيانات من أحدى تقارير التقييم، فإنكم عادة ما تحتاجون إلى التعامل مع ثلاث ولايات هي: التحميل والنجاح والخطأ.
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
export const fetchPosts = createAsyncThunk(
'posts/fetchPosts',
async (userId) => {
const response = await api.getPosts(userId);
return response.data;
}
);
ويمكن عندئذ معالجة الإجراءات المتولدة في مخفضي الشريحة باستخدام حقل ، مما يتيح لكم تحديث أعلام تحميلها ورسائل الخطأ.
"أثبتوا "ريدوكس ستوري
أما بالنسبة للمفاتيح الخارجية أو للحفاظ على الدولة عبر المستودعات، فيستخدم شركة ريدوكس فارسست، ويحتفظ تلقائياً بجزء فرعي من المتجر إلى مستودع احتياطي (الخزنة أو الترميم المتفاعلة) فالتجريد واضح ويمكنك أن تشتري شرائح محددة من القائمة البيضاء أو القائمة السوداء، غير أنه يتوخى الحذر إزاء استمرار كميات كبيرة من الثبات الانتقائي لاستخدام البيانات والنظر في استراتيجيات الهجرة.
Undo/Redo and Optimistic Updates
ومن السهل نسبياً تنفيذ عمليات الانتقال التي يمكن التنبؤ بها في ولاية ريدوكس، حيث يمكن أيضاً، عن طريق تخزين تاريخ من صور الدولة (أو تسلسل الإجراءات)، العودة إلى الولايات السابقة، حيث تستكمل المعلومات المتاحة فوراً قبل أن يؤكد الخادم أنها يمكن أيضاً أن تدار بـ " ريد " بإيفاد إجراء " ثم تأكيد أو إعادة التشغيل استناداً إلى رد الخادم.
تحديثات في الوقت الحقيقي مع شبكة ويب
وتحتاج تطبيقات مثل الدردشة أو البث الحي إلى دفعات في الوقت الحقيقي، ويمكن أن تدمج مستمعي الشبكة في وسط الواضع أو في الاغراض التي تبعث بأعمال عندما تصل بيانات جديدة، كما أن قنوات أحداث ريدو ساغا مناسبة بشكل خاص لهذا الغرض، ولكن هناك أيضاً شبكة متوسطة تُدارس دورة الحياة على الشبكة العالمية، وهي مفتاح الحفاظ على المنطق خارج العناصر للحفاظ على الفصل النظيف.
بدائل لاسترداد الكسب في ردة الفعل
وفي حين أن ريدوكس هو طبيب بيطري في مجال إدارة الدولة، فقد ظهرت عدة بدائل حديثة قد تكون مناسبة بشكل أفضل لأنواع معينة من المشاريع، ففهم هذه الخيارات يساعدك على اتخاذ قرار مستنير.
React Context API + useReducer
ويمكن أن يكون رد الفعل المبني في سياقات محددة، مقترناً بـ الخطاف، بديلاً أبسط للمتطوّرات الصغيرة والمتوسطة الحجم، غير أنه لا يحتاج إلى مكتبات إضافية، ولكن في كونتكست لديه بعض القيود: فهو يمكن أن يسبب إعادة تدويرات غير ضرورية، ويفتقر إلى إدماج أدوات التنمية في الصندوق، ولا يتسع نطاقه عندما تكون هناك سياقات حمراء أكثر قوة.
زوي
زوايتس هو مكتبة إدارة الدولة ذات الحد الأدنى التي توفر تدفقاً مماثلاً للبيانات غير المباشرة إلى ريدوكس، ولكنها أقل من مجرد مضخة، ولا تقوم بإنفاذ متجر واحد، وتقوم وكالة منع الحمل على أساس الخطافات، وهي مثالية للمشاريع التي تريد منافع متجر مركزي دون مراسم الإجراءات والمقلدين، وتعمل بشكل جيد مع شركة React Native وتحقق أداء جيد.
Jotai and Recoil
ويتبع كل من جوتاي وريدويل نهجا ذريا لإدارة الدولة، حيث تقسم الدولة إلى وحدات صغيرة مستقلة تسمى الذرات، وهذه المكتبات كبيرة للتفاعل الدقيق؛ وهي تتيح للمكونات أن تنضم إلى الذرات التي تحتاج إليها فقط؛ فالتنسيج، الذي طوره فيسبوك، يدمج بعمق مع الركود، ولكنه لا يزال تجريبيا ويحظى بدعم محدود للبيئة غير التفاعلية.
MobX
ويستخدم جهاز " موكس " الارتقاء بالوضع والارتقاء بالسيارات، مما يجعله " أكثر " سحرية " من " ريدوكس " ، وقد يكون من الأبسط الكتابة لبعض التطبيقات المتعلقة بالثقل، ولكن اعتماده على الدولة المطهولة يمكن أن يؤدي إلى قضايا أكثر صعوبة فيما يتعلق بالديوغات، كما أنه يفتقر إلى نفس المستوى من أدوات ديوكس.
اختيار الأداة التي تناسب أفضل طريقة مع علم فريقكم، وتعقيد منطق الدولة، والحاجة إلى أدوات التشويه، وبالنسبة للمشاريع الكبيرة في المؤسسة التي تضم العديد من المطورين، ومتطلبات الاختبار الصارمة، يظل ريدو (مع مجموعة الأدوات الحمراء) خيارا قويا ومثبتا.
خاتمة
إن نظام " ريدكس " يوفر إطارا قويا ومختبرا لإدارة الدولة المعقدة في مشاريع " ريكت " ، إذ إن تطبيق نظام البيانات غير الموجه، وتوفير أدوات قوية للبرمجيات المتوسطة والمطورة، يساعد فريقا على بناء تطبيقات قابلة للاستمرار ومستمرة ويمكن التنبؤ بها، وقد أدت الممارسات الحديثة، ولا سيما تلك التي تعززها مجموعة الأدوات الحمراء، إلى تخفيض كبير في حجم البيانات ذات الصلة بالصيانة السريعة، مما يجعلها أكثر سهولة.