React: ๋ณ€์ˆ˜๊ฐ€ new Date()๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ์ž์‹ ์š”์†Œ๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 10์›” 17์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: facebook/react

React Quickly ์ฑ…์˜ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์„ ๋”ฐ๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  babel์„ ํ†ตํ•ด ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋‚ด ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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 .

์™œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ๋‹ต๋ณ€์„ ๋„์™€ ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
๋งค์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

_๊ธฐ๋Šฅ_์„ ์š”์ฒญํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด _๋ฒ„๊ทธ_๋ฅผ ๋ณด๊ณ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ ํ–‰๋™์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€: ์žกํžˆ์ง€ ์•Š์€ ๋ถˆ๋ณ€ ์œ„๋ฐ˜: ๊ฐœ์ฒด๊ฐ€ React ์ž์‹์œผ๋กœ ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋ฐœ๊ฒฌ: Mon Oct 17 2016 09:12:00 GMT+0800 (CST)). ์ž์‹ ์ปฌ๋ ‰์…˜์„ ๋ Œ๋”๋งํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋Œ€์‹  ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ React ์• ๋“œ์˜จ์—์„œ createFragment(object)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์ฒด๋ฅผ ๋ž˜ํ•‘ํ•ฉ๋‹ˆ๋‹ค. DateTimeNow ์˜ ๋ Œ๋”๋ง ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

ํ˜„์žฌ ๋™์ž‘์ด ๋ฒ„๊ทธ์ธ ๊ฒฝ์šฐ https://jsfiddle.net ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๋ฐฉ๋ฒ•(ํ…œํ”Œ๋ฆฟ: https://jsfiddle.net/reactjs/69z2wepo/)์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ตœ์†Œํ•œ์˜ ๋ฐ๋ชจ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ์ œ๊ณตํ•˜์„ธ์š”.

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
span ํƒœ๊ทธ๋Š” ํ˜„์žฌ ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
์–ด๋–ค ๋ฒ„์ „์˜ React์™€ ์–ด๋–ค ๋ธŒ๋ผ์šฐ์ €/OS๊ฐ€ ์ด ๋ฌธ์ œ์˜ ์˜ํ–ฅ์„ ๋ฐ›๋‚˜์š”?
๋ฐ˜์‘ 15.3.2

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์งง์€ ๋Œ€๋‹ต์€ dateTimeNow ๋ณ€์ˆ˜์— ๋Œ€ํ•ด toString() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ผ ๋‚ ์งœ _object_์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ฐธ์กฐํ•˜๋Š” '๊ฐœ์ฒด' ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

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 ๋Œ“๊ธ€

์งง์€ ๋Œ€๋‹ต์€ dateTimeNow ๋ณ€์ˆ˜์— ๋Œ€ํ•ด toString() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ผ ๋‚ ์งœ _object_์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ฐธ์กฐํ•˜๋Š” '๊ฐœ์ฒด' ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

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() ์™€ ์œ ์‚ฌํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ž์—ด์„ ํฌ๋งทํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

MDN ์—์„œ ์ด๋Ÿฌํ•œ ๋ฉ”์†Œ๋“œ ๋ชฉ๋ก์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ!

์™œ React๋Š” ์ž๋™์œผ๋กœ ๋ฌธ์ž์—ด ๋ณด๊ฐ„์„ ์œ„ํ•ด .toString() ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‚˜์š”? ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰