React: يجب أن يقبل React.PropTypes.node مكون عديم الحالة (وظيفة)

تم إنشاؤها على ٢٢ نوفمبر ٢٠١٥  ·  3تعليقات  ·  مصدر: facebook/react

لقد استبدلت للتو بعض مكونات التفاعل التي تم تحديدها باستخدام فئات es6 ، وأتلقى الآن تحذيرات حول مكون رد الفعل عديم الحالة (الذي هو مجرد fuction) ليس نموذجًا لـ ReactNode.

Warning: Failed propType: Invalid prop `Loader` supplied to `Picture`, expected a ReactNode.

كنت أتحقق من صحة بعض المكونات باستخدام React.PropTypes.node ، لكنني الآن بحاجة إلى استخدام PropTypes.oneOfType([ PropTypes.node, PropTypes.func ]) والذي يبدو طويلًا بعض الشيء لأقول "يمكن أن يكون هذا أي شيء يمكن تقديمه كمكون" (وهو ما ProTypes.node من المفترض أن يغطي الحق؟).

من الوثيقة

    // Anything that can be rendered: numbers, strings, elements or an array
    // (or fragment) containing these types.
    optionalNode: React.PropTypes.node,

ربما يجب إضافة func ؟ أو هل هناك أي سبب لعدم تعامل node func أيضًا؟

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

هل يمكنك إظهار كيف كنت تستخدم هذا؟ لا أعتقد أن فئات المكونات كان يجب أن تكون صالحة لـ node أيضًا. من المفترض أن يقبل node أي شيء يمكن تقديمه. لا يمكن تقديم الفئات مباشرة - يمكنك تمرير عنصر مع مجموعة الكتابة.

ال 3 كومينتر

ماذا عن إضافة مدقق propType جديد؟ شيء مثل

propTypes: {
    optionalComponent: React.PropTypes.component
}

حيث سيكون للمكون شكل

PropTypes.oneOfType([ PropTypes.node, PropTypes.func ])

أو شيئا من هذا القبيل. في رأيي ، من الخطير جدًا السماح للأشخاص بتمرير الوظائف ، لكني لست متأكدًا من كيفية إجراء تحقق أفضل. قراءة function.toString تبدو وكأنها اختراق ضخم لن ينجح بعد التصغير ، لكن هذا هو الخيار الوحيد الذي أعرفه.

هل يمكنك إظهار كيف كنت تستخدم هذا؟ لا أعتقد أن فئات المكونات كان يجب أن تكون صالحة لـ node أيضًا. من المفترض أن يقبل node أي شيء يمكن تقديمه. لا يمكن تقديم الفئات مباشرة - يمكنك تمرير عنصر مع مجموعة الكتابة.

يا إلهي. انت محق. أشعر بالغباء. أعتقد أنني كنت أتحقق من صحة شيء ما بطريقة سيئة. آسف على الضوضاء.

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