في المثال صفها بأنها جزء من وثيقة API من "combineReducers"، في وقت إنشاء متجر "المخفض" كما يتم تمرير معلمة إلى createStore في "ملف app.js " ( let store = createStore(reducer)
).
لكن في " المخفضات / index.js " ، اسم الوظيفة هو "CombinedReducers" وليس "المخفض" ( export default combineReducers({..})
).
إذًا ، ألا يجب أن تكون المعلمة عند إنشاء المتجر هي "combeducers" (على سبيل المثال: let store = createStore(combineReducers
)) ؟؟
سأقول لا. إذا فكرت في الأمر ، فإن Redux لديه وظيفة مخفض واحدة فقط. حقيقة أن هذا المثال يستخدم combineReducers
لإنشاء هذه الوظيفة هو أحد تفاصيل التنفيذ. بقدر ما يتعلق الأمر app.js
، فإنه لا يعرف أو يهتم بما يحدث داخل هذه الوظيفة ، أو كيف أنشأناها ، أو ما الذي تفعله.
لاحظ أيضًا أنه عندما يقوم reducers/index.js
بعمل export default combineReducers({})
، فإنه في الواقع لا _ يُنشئ_ شيئًا يسمى "CombinedReducers". تقول "خذ نتيجة استدعاء الوظيفة هذا ، مهما كانت ، واجعلها التصدير الافتراضي." في الواقع ، من الناحية الفنية ، لا يحتوي هذا الناتج حتى على أي اسم متغير حقيقي مرتبط به.
أخيرًا ، لاحظ أنه عندما تقوم بعمل export default
، فإن أي ملف يستورد هذا التصدير الافتراضي يمكن أن يعطي أي اسم يريده للمتغير المحلي ، تمامًا مثل كيف يمكن لتعريف دالة أن يسمي معلمة شيئًا مختلفًا عن أي اسم متغير تم استخدامه في موقع الاتصال. أمثلة:
function someFunction(a, fred, randomVariableName) {}
const firstVariable = 1;
const theMeaningOfLife = 42;
const aTotallyUselessName = "Whatever";
someFunction(firstVariable, theMeaningOfLife, aTotallyUselessName);
لاحظ كيف أن أسماء المتغيرات التي أحددها خارج الوظيفة لا يجب أن يكون لها أي تطابق مع أسماء المعلمات داخل الوظيفة.
وبالمثل ، عند التصدير:
// fileA.js
export default const aThing = 42;
// fileB.js
import iCanGiveThisAnyNameIWant from "fileA";
markerikson شكرا لك على هذه الإجابات الرائعة.
شكرًا جزيلاً لكmarkerikson.
أتعلم Redux لاستخدامه مع JQuery ، مطروحًا منه معرفة React. تساعدني إجابتك الآن على فهم الأمثلة باستخدام كود React بشكل أفضل.
التعليق الأكثر فائدة
سأقول لا. إذا فكرت في الأمر ، فإن Redux لديه وظيفة مخفض واحدة فقط. حقيقة أن هذا المثال يستخدم
combineReducers
لإنشاء هذه الوظيفة هو أحد تفاصيل التنفيذ. بقدر ما يتعلق الأمرapp.js
، فإنه لا يعرف أو يهتم بما يحدث داخل هذه الوظيفة ، أو كيف أنشأناها ، أو ما الذي تفعله.لاحظ أيضًا أنه عندما يقوم
reducers/index.js
بعملexport default combineReducers({})
، فإنه في الواقع لا _ يُنشئ_ شيئًا يسمى "CombinedReducers". تقول "خذ نتيجة استدعاء الوظيفة هذا ، مهما كانت ، واجعلها التصدير الافتراضي." في الواقع ، من الناحية الفنية ، لا يحتوي هذا الناتج حتى على أي اسم متغير حقيقي مرتبط به.أخيرًا ، لاحظ أنه عندما تقوم بعمل
export default
، فإن أي ملف يستورد هذا التصدير الافتراضي يمكن أن يعطي أي اسم يريده للمتغير المحلي ، تمامًا مثل كيف يمكن لتعريف دالة أن يسمي معلمة شيئًا مختلفًا عن أي اسم متغير تم استخدامه في موقع الاتصال. أمثلة:لاحظ كيف أن أسماء المتغيرات التي أحددها خارج الوظيفة لا يجب أن يكون لها أي تطابق مع أسماء المعلمات داخل الوظيفة.
وبالمثل ، عند التصدير: