2017-08-07 43 views
0

我有这样的代码:无法显示时间字符串中反应,运用国际FORMATTEDTIME

var message = "The event starts at {1}"; 
var startTime = <FormattedTime value={new Date(eventData.startDateTime)}/>; 
message = message.replace("{1}", startTime); 

return (
    <div> 
    {message} 
    <br/> 
    <FormattedTime value={new Date(eventData.startDateTime)}/><br/> 
    </div>      
); 

这将打印为:

The event starts at [object Object] 
5:55 PM 

我有一种感觉,这更多的是用JavaScript而不是反应,但是......为什么它在一种情况下打印为[对象对象],而在另一种情况下打印为正确的时间?

有没有办法让我的事件字符串与正确的时间?

+2

当您执行'message.replace'时,您不会将'FormattedTime />'对象呈现为HTML,而是将其字符串化。 –

回答

0

由于问题是由于试图使用什么是dom对象作为变量,所以一种解决方案是在HTML中完成整个事情,并使用intl的FormattedMessage进行字符串替换。这只会发生工作,因为我已经使用了大括号内的东西来替换我的字符串。

<FormattedMessage id="message" 
    defaultMessage="The event starts at {1}" 
    values={{ 1: startTime }} 
/> 
0

FormattedTime返回一个对象。如果你想返回一个字符串,你必须使用函数formatTime

您可以通过将'react-intl'中的函数injectInlt调用到您的组件中来获取它。该功能将在this.props.intl.formatTime()

formatTime(Date.now()); // "4:03 PM"