我一直在用 React 构建一个演示,并遇到了 react-intl。我尝试将 FormattedDate 组件与从 API 调用返回并存储在“this.state”中的“值”一起使用
但是页面无法加载,控制台显示: RangeError: Provided date is not in valid range,代码如下。
index.js
ReactDOM.render(
<IntlProvider locale='en'>
<Router>
<Route path="/" component={App}>
<IndexRoute component={Login} />
<Route path="bookings" component={Bookings} />
<Route path="bookings/:id" component={BookingDetail} />
<Route path="create" component={BookingCreate} />
</Route>
</Router>
</IntlProvider>,
document.getElementById('react-container')
);
在我拥有的组件的渲染中,
render() {
return (
<FormattedDate value={new Date(this.state.booking.checkIn)} day="numeric" month="long" year="numeric" />
)
}
在代码中,我们看到组件使用Intl.DateTimeFormat.prototype.format来生成格式化日期,但是当我在Node repl中执行相同操作时
var date = '2015-10-30T23:53:28.879Z'
console.log(new Intl.DateTimeFormat().format(new Date(date)));
10/30/2015 //It produces the correct output
知道为什么会这样吗?我也尝试过将裸字符串分配为“值”以及 (new Date(date.parse(this.state.booking.checkIn)
,但都产生范围错误。