yaNastia
@yaNastia

Как вернуть копию значения с объекта в vuex store?

Здесь я слежу за метриками которые изменяется и если условие работает, передаю объекты метриков в store mutations

watch: {
        metric() {
            if (this.metric) {
                this.setSingleMetricNamesMap({
                    id: this.metric.id,
                    name: this.metric.name })
            }
        }
    },


state
singleMetricNamesMap: {}

state getter Пробую возвращать имя метрики по id который передаю с компонента
singleMetricNamesMap: state => id => state.singleMetricNamesMap[id]


state mutations Записываю объекты метриков в state
setSingleMetricNamesMap: (state, val) => {
            state.singleMetricNamesMap[val.id] = val.name
        },


Компонент где я передаю в state getter id метрика и пробую вернуть копию значения его имени с объекта store.singleMetricNamesMap. Но после перезагрузки страницы получаю undefined на свойство объекта то есть на id, а имена к метрикам появляются только после изменений метрика (например редактирования). Подскажите пожалуйста, правильно ли я возвращаю копию значения с объекта store.singleMetricNamesMap и как отображать имена метриков сразу когда загрузился компонент
<z-dash-tile-config-option
            label="Metric"
            :value="singleMetricNamesMap(value.metricId)"
        >
  • Вопрос задан
  • 211 просмотров
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F Куратор тега Vue.js
после перезагрузки страницы получаю undefined

Сохраняйте стейт в localStorage.

Если лень реализовывать сохранение самостоятельно - есть готовые плагины, например.

правильно ли я возвращаю копию значения с объекта store.singleMetricNamesMap

Геттер в хранилище, возвращающий функцию, которая по переданному id возвращает объект... Не вижу, в чём смысл подобных сложностей.

Просто читайте свойство объекта, типа $store.state.singleMetricNamesMap[value.metricId]. Если так по-вашему слишком длинно - сделайте в компоненте вычисляемое свойство, которое будет представлять singleMetricNamesMap.
Ответ написан
Ваш ответ на вопрос

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

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