Dva: تصميم النماذج

تم إنشاؤها على ٨ ديسمبر ٢٠١٦  ·  11تعليقات  ·  مصدر: dvajs/dva

هل ينبغي تقسيم تقسيم الوحدات في النماذج إلى "خط عرض الصفحة" أو "خط عرض البيانات"؟

على سبيل المثال:
"البيانات" في تطبيقي --- أخبار + مستخدم + تعليق (3 بيانات مستقلة)
"الصفحة" في طلبي --- الصفحة الرئيسية للصفحة الرئيسية + صفحة المستخدم صفحتي (كلاهما سيستخدم النموذج والإجراء في "البيانات" أعلاه بدرجات متفاوتة)

1. إنشاء HomePageModel و UserPageModel
صمم عمل ونموذج News + User في HomePageModel
صمم عمل ونموذج User + Comment في UserPageModel

2. إنشاء NewsModel و UserModel و CommentModel
قم بتوصيل الوحدات النمطية NewsModel و UserModel في صفحة الصفحة الرئيسية. قم بتوصيل الوحدتين النمطية UserModel و CommentModel في صفحة UserPage.

ما هي الطريقة التي ينبغي علي تصميم النماذج بناءً عليها؟

question

التعليق الأكثر فائدة

تضمين التغريدة
بعبارة أخرى ، يمكنني فصل "خط عرض البيانات" و "خط عرض الصفحة" تمامًا ، وإنشاء نماذج مختلفة ، وربط نموذج "خط عرض الصفحة" المقابل ونموذج "بُعد البيانات" المطلوب في الصفحة ، أليس كذلك؟

function mapStateToProps(state) {
  return {
    // 数据维度创建的model
    users: state.users,
    comments:state.comments,
    // 页面维度创建的model
    homePage:state.homePage,
  };
}

ال 11 كومينتر

تضمين التغريدة
أعتقد أن هذا المثال لا يجيب على سؤالي لأن هذا المثال يتضمن فقط "صفحة واحدة" + "بيانات مفردة"
لذلك يمكن فهمه على أنه تقسيم النماذج على "الصفحات" ، أو يمكن فهمه على أنه تقسيم النماذج وفقًا لـ "البيانات".
ملاحظة: تشير نماذج تقسيم "الصفحة" المذكورة هنا إلى إنشاء نموذج لكل صفحة ، وتشير نماذج تقسيم "البيانات" إلى إنشاء نموذج لكل وحدة بيانات مستقلة أو منطق أعمال.

فهم هذا المثال:
1. نماذج تقسيم "الصفحة" - إذا كانت هناك صفحة جديدة ، فستعرض الصفحة قائمة التعليقات وقائمة المستخدمين المطابقة لها. ثم يجب عليك إنشاء نموذج يسمى usersAndMessages لاستخدامه في هذه الصفحة الجديدة.
2. نماذج تقسيم "البيانات" - إذا كنت بحاجة إلى عرض قائمة من التعليقات على هذه الصفحة ، فأنت بحاجة إلى إنشاء نموذج آخر يسمى التعليقات.

يجب أن أفهم أن "الصفحة" تتوافق مع "النموذج".
ولكن كيف نتعامل مع هذه المشكلة مع بعض الأجزاء التي تحتاج إلى إعادة استخدامها بين "الصفحات"؟
في النهاية ، يجب علينا فصل الإجراءات المعاد استخدامها والمخفضات عن النماذج؟
لكن ألا يعود هذا إلى الطريقة التقليدية لكتابة الإعادة؟

يجب أن أفهم أن "الصفحة" تتوافق مع "النموذج".

لا يحتاج النموذج والصفحة إلى التوافق مع بعضهما البعض ، حيث يمكن تصميمهما بشكل منفصل ، ويمكن الحصول على جميع البيانات المطلوبة على الصفحة من خلال الاتصال.

تضمين التغريدة
بعبارة أخرى ، يمكنني فصل "خط عرض البيانات" و "خط عرض الصفحة" تمامًا ، وإنشاء نماذج مختلفة ، وربط نموذج "خط عرض الصفحة" المقابل ونموذج "بُعد البيانات" المطلوب في الصفحة ، أليس كذلك؟

function mapStateToProps(state) {
  return {
    // 数据维度创建的model
    users: state.users,
    comments:state.comments,
    // 页面维度创建的model
    homePage:state.homePage,
  };
}

@ zerozaki0752 نعم.

sorrycc شكرا لك! ! !

سؤال آخر حول بعض المشاكل في عرض توضيحي للاكتشاف
1. الأساليب المحددة في التأثيرات والمخفضات في النموذج ، بعضها يستخدم داخليًا بواسطة النموذج ، وبعضها يتم تسميته بواسطة طريقة العرض (لا يوجد تمييز واضح)
2. في العرض التوضيحي ، يُطلق على طريقة العرض لاستدعاء الإجراء إرسال "مساحة الاسم / اسم الوظيفة" مثل هذا
3. لا يتم تمرير المعلمة الثانية mapDispatchToProps عند الاتصال

التأثير المتوقع هو تغليف ما يجب استدعاؤه بواسطة طريقة العرض في النموذج ، ثم يتم استيراد mapDispatchToProps إلى طريقة العرض ، ويمكن تشغيل الإجراء مباشرةً من خلال props.namespace_functionName في طريقة العرض دون الحاجة إلى الإرسال في كل مرة.

أتساءل ما إذا كان هذا معقول؟ هل من الممكن؟

هذه عادة شخصية ، أفضل طريقة الإرسال (العمل).

لا يتم تمرير المعلمة mapDispatchToProps في الاتصال لربط الإجراء ، ولكن هل يمكنك استخدام الإرسال للنقل إلى الإجراء في أي نموذج؟

المكون connect سيكون له خصائص dispatch .

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