0

我想显示为输出:

User was online for 12 minutes

我通过设置时间间隔来计算用户在页面上花费的时间。

     componentDidMount() {

          this.interval = setInterval(() => this.setState({ time: Date.now() }), 60000);
      }
render () {
<div> User online for {this.state.time} minutes</div>

}

但这给了我:

输出/输出:

User online for 1532887387453 minutes

因此,这种将纪元转换为人类可读分钟的转换。

这可能吗?

4

2 回答 2

2

这个时间以毫秒为单位。所以,要得到分钟,你应该把它除以 1000(得到秒),然后再除以 60(得到 mniutes),或者简单地把它除以 60000。所以,使用如下代码:

constructor(props) {
  super(props);
  this.state = { time: 0 };
}

componentDidMount() {
  this.interval = setInterval(() => this.setState({ time: (Date.now() / 60000) - this.state.time }), 60000);
}

render() {
  return (<div>User online for {this.state.time} minutes</div>);
}
于 2018-07-29T18:11:23.020 回答
0

如果您使用 setInterval 来更新花费的时间,为什么不能在每分钟后简单地增加计数器,

constructor() {
  super();
  this.state = {
    timeSpent: 0, // if you want to show 1 as the minimum, set as 1 here
  }
}

componentDidMount() {
  this.interval = setInterval(() => this.setState({ timeSpent: ++this.state.timeSpent }), 60000);
}
render () {
  <div> User online for {this.state.timeSpent} minutes</div>
}

PS:但是将这个时间计算逻辑保留在组件中是非常糟糕的方法。

于 2018-07-29T18:35:54.223 回答