Redux: تم شرح خطأ في التعليمات البرمجية في المثال في مستند API لـ "CombinedReducers"؟

تم إنشاؤها على ١٤ أبريل ٢٠١٦  ·  3تعليقات  ·  مصدر: reduxjs/redux

في المثال صفها بأنها جزء من وثيقة 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";

ال 3 كومينتر

سأقول لا. إذا فكرت في الأمر ، فإن 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 بشكل أفضل.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات