【问题标题】:Get updated time information from momentjs in vuejs without refreshing the page?在不刷新页面的情况下,从vuejs中的momentjs获取更新的时间信息?
【发布时间】:2023-01-25 03:18:09
【问题描述】:

我有一张表,其中显示有关站点的信息。这些信息之一是上次刷新数据的时间。
在表格的顶部,我想添加一个图标,该图标仅在现在和上次刷新数据之间的时间 > 5 分钟时出现。我希望这些数据在用户不刷新页面的情况下更新。

我在我的 vuejs 代码中添加了一个这个组件

computed () {
getMinutesPassedSinceLastRefresh () {
     if (moment(this.currentTime).diff(this.lastRefreshTime, 'minutes') >= 5) {
        return moment(this.currentTime).diff(this.lastRefreshTime, 'minutes')
      }
  }
}

这将返回上次刷新数据与当前时间之间的分钟数。但是其中的数据不会自行更新,只有在我刷新页面或转到另一个选项卡并返回时才会更新。

任何想法如何解决这个问题?

【问题讨论】:

  • “currentTime”和“lastRefreshTime”何时以及如何更新?

标签: javascript vue.js vuejs2 momentjs computed-properties


【解决方案1】:

currentTime 和/或 lastRefreshTime 似乎不是反应性的——它们是否在数据中正确定义并设置了默认值?它应该看起来像这样

data () {
  return {
    currentTime: null,
    lastRefreshTime: null
  }
}

这些值不必为空,但定义它们很重要。

此外,计算属性最好返回一些东西,而不是依赖于默认的未定义。老实说,我不确定这是否会导致这个问题,但请尝试这样做

const minutesSinceLastUpdate = moment... // calculate minutes
return minutesSinceLastUpdate > 5
  ? minutesSinceLastUpdate
  : null

Docs on reactivity

【讨论】:

    猜你喜欢
    • 2014-01-16
    • 2017-03-24
    • 2017-05-11
    • 2011-06-15
    • 1970-01-01
    • 2022-11-27
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多