@tenaro

Как добавить слепок текущего состояния?

В store vuex:

const state = {
  filter_list: [], - тут хочу хранить слепки
  filter: { - текущие состояние 2х инпутов, связано через v-model
	input1:'',
	input2:''
  }
}

Хочу по кнопке сохранять текущее значение filter как новый элемент filter_list.

В мутации как-то так:

FILTER_SAVE (state) {
  state.filter_list.push({filter: state.filter})
}

Проблема в реактивности, при изменении текстов в инпуте, меняются старые записанные объекты.

Как это правильно организовать? Реальная задача - дать пользователю сохранять свои фильтры.
  • Вопрос задан
  • 254 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега Vue.js
Проблема в реактивности, при изменении текстов в инпуте, меняются старые записанные обьекты

Ну да, ну да. Вот так и получается: JS не учи, фреймворки используй.

Сохраняйте копию вместо оригинала. Типа так:

state.filter_list.push({ ...state.filter })

Это если объект плоский. Если есть вложенность, используйте _.cloneDeep, например (или какой-либо иной аналог, или сами можете попробовать реализовать рекурсивную функцию копирования).
Ответ написан
Kozack
@Kozack Куратор тега Vue.js
Thinking about a11y
Или так:
state.filter_list.push( JSON.parse(JSON.stringify(state.filter)) )
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы