93 lines
4.6 KiB
Markdown
93 lines
4.6 KiB
Markdown
---
|
|
title: Redux
|
|
localeTitle: مسترجع
|
|
---
|
|
## مسترجع
|
|
|
|
Redux هو حاوية حالة يمكن التنبؤ بها لتطبيقات JavaScript.
|
|
|
|
يساعدك على كتابة التطبيقات التي تتصرف باستمرار ، وتشغيل في بيئات مختلفة (العميل والخادم ، والأصلي) ، وسهلة لاختبار. علاوة على ذلك ، فإنه يوفر تجربة رائعة للمطورين ، مثل تحرير التعليمة البرمجية المباشرة مع مصحح أخطاء وقت السفر.
|
|
|
|
المبادئ الأساسية لـ Redux:
|
|
|
|
1. Redux هي حاوية حكومية ، حيث تقوم بتخزين كل الولاية في مكان واحد
|
|
2. تتم قراءة الولاية فقط ، والطريقة الوحيدة لتغيير الدولة هي إرسال عمل.
|
|
3. لا يمكن تغيير الحالة إلا من خلال وظائف نقية أو في مصطلح آخر: مخفضات. يأخذ Redux Reducers في الحالة السابقة وكائن التصرف ويعيد الحالة التالية.
|
|
|
|
من الناحية العملية ، كيف نستخدم Redux بالضبط؟
|
|
|
|
### المادة 1
|
|
|
|
#### أين يتم تخزين هذه الحالة؟ Redux يوفر لك وظيفة يدوية تسمى
|
|
|
|
`createStore()
|
|
`
|
|
|
|
حيث يمكنك إنشاء المتجر الذي سيحافظ على كل حالتك.
|
|
|
|
### القاعدة 3 (سأقوم بعرض القاعدة 3 أولاً لأنها ستجعلها أكثر منطقية)
|
|
|
|
#### لا يمكن تغيير الحالة إلا من خلال وظيفة نقية تعرف بالمخفّض حتى نتمكن من إنشاء هذا الاتصال سنمرر في المخفض إلى CreateStore () مثل
|
|
|
|
`var store = createStore(reducer)
|
|
`
|
|
|
|
يصبح الأمر أكثر تعقيدا عندما يكون لديك مخفضات أكثر ولكن في الصميم ، يحتوي المخزن الآن على مخفض متصل به
|
|
|
|
### القاعدة 2
|
|
|
|
#### بمجرد أن يكون لدينا متجر يتم إنشاؤه باستخدام store = createStore (المخفض). يحتوي المتجر الجديد الذي أنشأناه على طريقة تسمى الإرسال. تذكر في القاعدة 2 الطريقة الوحيدة التي يمكننا بها تغيير الدولة هي إرسال عمل!
|
|
|
|
تستطيع أن ترى أين يحدث هذا.
|
|
|
|
`store.dispatch(action)
|
|
`
|
|
|
|
قبل أن أتناول ما هو المخفض والعمل الذي أقوم به ، أعتقد أن عرض تطبيق أساسي ومحدود للغاية لـ CreateStore () من Redux سوف يساعد بشكل كبير.
|
|
|
|
`createStore = (reducer) => {
|
|
let state;
|
|
//dispatch method
|
|
dispatch = (action) => {
|
|
state = reducer(state, action)
|
|
}
|
|
return {dispatch}
|
|
}
|
|
`
|
|
|
|
انظر كيف نمرر في المخفض إلى createStore ويصبح مضبوطًا في طريقة إرسالنا ؛ وعندما نطلق على طريقة الإرسال فإنه يأخذ في عمل ويضع حالة جديدة على أساس ما سوف يعود المخفض.
|
|
|
|
## ما هو المخفض؟ ما هو العمل؟
|
|
|
|
الإجراء في المستوى الأساسي هو كائن له خاصية تسمى النوع. يمكن أن يكون لها أيضًا خصائص أخرى ، ولكن ببساطة ستتمتع بالنوع.
|
|
|
|
`var someAction = {type:'doSomething'}
|
|
`
|
|
|
|
المخفض هو مجرد وظيفة:
|
|
|
|
`var reducer = (state, action) => {
|
|
|
|
if (action.type === 'doSomething'){
|
|
return changedState;
|
|
} else if ( action.type === 'doSomethingElse'){
|
|
return changedState;
|
|
} else {
|
|
return state
|
|
}
|
|
}
|
|
`
|
|
|
|
الإجراء الذي نمرره إلى المخفض سيحدد كيفية تغيير الحالة اعتمادًا على النوع. يصبح Redux أكثر تعقيدًا ، ولكن إذا فهمت هذه المبادئ ، فسيكون لديك وقتًا أسهل في التنقل من خلال مشاريع رد الفعل المتفاعلة!
|
|
|
|
#### معلومات اكثر:
|
|
|
|
##### هل حقا بحاجة إلى Redux؟
|
|
|
|
[كتب دان أبراموف](https://github.com/gaearon) ، مبتكر Redux ، منذ بعض الوقت مقالة رائعة [قد لا تحتاج إلى Redux](https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367) . يجب عليك التحقق من ذلك أولاً ، لأنك قد لا تحتاج إليه.
|
|
|
|
لمزيد من المعلومات ، توجه إلى [http://redux.js.org/](http://redux.js.org/)
|
|
|
|
### مصادر
|
|
|
|
* [دورة من دان أبراموف ، مؤلف Redux.](https://egghead.io/courses/getting-started-with-redux) |