@Daniele_Viotti

Vuex: Getters — обновление в реальном времени. state — new Date()?

Всем привет!
Кратко: как заставить getter состояния "new Date()" обновляться в real-time?

Есть следующий Vuex store:
state: {
  datetime: new Date(),
},

getters: {
   getDatetime: state => state.datetime,
}


Вытягиваю эту переменную в шаблоне с помощью getDatetime:
computed: {
   getDatetime() {return this.$store.getters.getDatetime;}
}

Однако время "застывает" и не меняется до перезагрузки страницы... Прошу помощи
  • Вопрос задан
  • 150 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
state: {
  date: null,
  interval: null,
},
mutations: {
  start(state) {
    if (!state.interval) {
      state.interval = setInterval(() => this.commit('update'), 1000);
    }
  },
  update(state) {
    state.date = new Date();
  },
},

https://jsfiddle.net/uh5nsp1v/
Ответ написан
@tvsjke
информация засекречена
store.js
const state = {
  now: new Date
}

const actions = {
  start ({ commit }) {
    setInterval(() => {
      commit('UPDATE_TIME')
    }, 1000)
  }
}

const mutations = {
  UPDATE_TIME(state) {
    state.now = new Date
  }
}


component.vue
computed: {
    ...mapState(['now'])
}


Не забудь start вызвать

Геттер не обязательно использовать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы