В моем store мне нужно иметь как текущую неделю (постоянную), так и переменную, изначально равную текущей неделе, которая может быть изменена мутациями:

export default new Vuex.Store({
  state: {
    thisWeek: moment().startOf('isoWeek'),
    currentWeek: thisWeek
  }
});

Я получаю

thisWeek не определено

Хотя Как это решить?

(бонус: нет ли способа различать переменные и константы в Vuex?)

1
drake035 25 Сен 2018 в 22:00

2 ответа

Лучший ответ

Вы можете определить свой state с его свойствами следующим образом:

 const thatWeek= moment().startOf('isoWeek')
 
 const state= {
    thisWeek: thatWeek,
    currentWeek: thatWeek
  }
 
 const mutations = {
 }
 
 export default new Vuex.Store({
 state:state,
 mutations:mutations
});

Предполагая, что вы правильно импортировали moment, но вы должны знать, что в javascript вы не можете установить свойство объекта на const, но вы можете сохранить его постоянным, не изменяя его, вы можете обратиться к этот вопрос, чтобы получить подробнее

1
Boussadjra Brahim 25 Сен 2018 в 20:38

Таким образом нельзя использовать государственную собственность.

Если все, что вам нужно, это инициировать оба свойства с одним и тем же значением, почему бы не создать это значение заранее, сохранить его в локальной переменной и присвоить обоим?

Что касается констант: свойство store всегда изменяемо. Вы можете создавать константы с помощью необработанного JavaScript (const) и импортировать их, или, если вы хотите перейти на полностью Vuex, вы, вероятно, можете создать геттер Vuex, который возвращает постоянное значение.

2
dr_barto 25 Сен 2018 в 20:02