React本机new Date()不能正常工作的原因是因为React是一个JavaScript库,而JavaScript的Date对象是基于客户端的本地时间的。在React中,组件的渲染是基于虚拟DOM的,而不是直接操作浏览器的DOM。因此,当使用React的组件进行渲染时,new Date()将返回的是组件渲染时的初始时间,而不是当前的时间。
为了解决这个问题,可以使用React提供的生命周期方法来更新时间。可以通过在组件的state中设置一个时间戳,并使用定时器来更新这个时间戳,从而实现实时更新时间的效果。
以下是一个示例代码:
import React, { Component } from 'react';
class Clock extends Component {
constructor(props) {
super(props);
this.state = {
time: new Date()
};
}
componentDidMount() {
this.timerID = setInterval(
() => this.tick(),
1000
);
}
componentWillUnmount() {
clearInterval(this.timerID);
}
tick() {
this.setState({
time: new Date()
});
}
render() {
return (
<div>
<h1>当前时间:</h1>
<h2>{this.state.time.toLocaleTimeString()}</h2>
</div>
);
}
}
export default Clock;
在上面的代码中,我们在组件的state中设置了一个time属性来保存当前时间。在组件挂载后,我们使用定时器每秒钟更新一次时间,并通过调用setState方法来触发组件的重新渲染。在render方法中,我们使用toLocaleTimeString方法将时间对象转换为本地时间字符串,并将其显示在页面上。
这样,每秒钟都会更新一次时间,实现了实时更新时间的效果。
推荐的腾讯云相关产品:腾讯云云服务器(CVM),产品介绍链接地址:https://cloud.tencent.com/product/cvm
领取专属 10元无门槛券
手把手带您无忧上云