React: يشير المتغير إلى جديد لا يمكن أن يكون التاريخ () عنصرًا فرعيًا.

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

أنا أتبع مقتطف الشفرة من الكتاب React Quickly .
ولا يمكنني تشغيل الكود بعد تجميعه عبر بابل.
الكود الخاص بي مثل:

class DateTimeNow extends React.Component{
    render(){
        let dateTimeNow = new Date();
        return <span>Current date and time is {dateTimeNow}.</span>;
    }
}
ReactDOM.render(
    <DateTimeNow/>,
    document.getElementById('content')
);

رسالة الخطأ التي أبلغ عنها المتصفح هي:
Uncaught Invariant Violation: Objects are not valid as a React child (found: Mon Oct 17 2016 09:12:00 GMT+0800 (CST)). If you meant to render a collection of children, use an array instead or wrap the object using createFragment(object) from the React add-ons. Check the render method of DateTimeNow .

هل يمكنك المساعدة في الإجابة عن سبب حدوث خطأ؟
شكرا جزيلا لك!

هل ترغب في طلب _ ميزة _ أو الإبلاغ عن _ خطأ _؟

ما هو السلوك الحالي؟
رسالة الخطأ: Uncaught Invariant Violation: الكائنات غير صالحة كطفل تابع لـ React (تم العثور عليه: Mon Oct 17 2016 09:12:00 GMT + 0800 (CST)). إذا كنت تقصد تصيير مجموعة من العناصر الفرعية ، فاستخدم مصفوفة بدلاً من ذلك أو لف الكائن باستخدام createFragment (كائن) من إضافات React. تحقق من طريقة العرض DateTimeNow .

إذا كان السلوك الحالي عبارة عن خطأ ، فالرجاء تقديم خطوات إعادة الإنتاج وإذا أمكن عرضًا توضيحيًا بسيطًا للمشكلة عبر https://jsfiddle.net أو ما شابه (نموذج: https://jsfiddle.net/reactjs/69z2wepo/).

ما هو السلوك المتوقع؟
تعرض علامة الامتداد الوقت الحالي
ما إصدارات React وأي متصفح / نظام تشغيل متأثر بهذه المشكلة؟
رد فعل 15.3.2

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

الإجابة المختصرة هي أنك تحتاج إلى استدعاء طريقة toString() في متغير dateTimeNow ، لأنه تاريخ _ كائن_ ، وليس سلسلة. على سبيل المثال ، أحد "الكائنات" الذي تشير إليه رسالة الخطأ.

return <span>Current date and time is {dateTimeNow.toUTCString()}.</span>;

ومع ذلك ، فإن رسالة الخطأ محيرة في البداية لأنها تعرض التاريخ كسلسلة. على سبيل المثال ، إذا استبدلت {dateTimeNow} بكائن مثل { {a: 1} } ، فستكون رسالة الخطأ أكثر منطقية:

Uncaught Error: Objects are not valid as a React child (found: object with keys {a}).

ال 3 كومينتر

الإجابة المختصرة هي أنك تحتاج إلى استدعاء طريقة toString() في متغير dateTimeNow ، لأنه تاريخ _ كائن_ ، وليس سلسلة. على سبيل المثال ، أحد "الكائنات" الذي تشير إليه رسالة الخطأ.

return <span>Current date and time is {dateTimeNow.toUTCString()}.</span>;

ومع ذلك ، فإن رسالة الخطأ محيرة في البداية لأنها تعرض التاريخ كسلسلة. على سبيل المثال ، إذا استبدلت {dateTimeNow} بكائن مثل { {a: 1} } ، فستكون رسالة الخطأ أكثر منطقية:

Uncaught Error: Objects are not valid as a React child (found: object with keys {a}).

https://github.com/facebook/react/issues/7988#issuecomment -254148427 صحيح.

التواريخ عبارة عن كائنات في JS ، لكن إخراجك قد يحتوي فقط على عناصر وسلاسل وأرقام React. ستعمل تنسيق سلسلة بأي طريقة تشبه toString() .

يمكنك العثور على قائمة بهذه الطرق على شبكة مطوري موزيلا .

هتافات!

لماذا لا تستطيع React استدعاء .toString() لنا تلقائيًا باستيفاء سلسلة lá؟ الكثير من النفقات العامة؟

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