yaNastia
@yaNastia

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

Хочу добавить имя каждой сущности через ее ид, но не получаю имени, помогите пожалуйста решить проблему

Здесь я слежу за метриками которые изменяется и если условие работает, передаю объекты метриков с ключом ид метрика и значением его имени в store mutations
watch: {
        metric() {
            if (this.metric) {
                this.setSingleMetricNamesMap({ [this.metric.id]: this.metric.name })
            }
        }
    },


state
понимаю что у vuex примитивные типы предпочтительнее, пробовал установить значение в null но тогда не добавляется несколько объектов(метриков) в state
singleMetricNamesMap: []

state getter
пробую возвращать имя метрики для идентификатора, вместо объекта, содержащего имена и идентификаторы метрики.
singleMetricNamesMap: state => state.singleMetricNamesMap


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


Компонент где я вызываю state getter и пробую получить имена метриков по их Id
showNames() {
            return this.singleMetricNamesMap.forEach(el => el[this.value.metricId])
        }


<z-dash-tile-config-option
            label="Metric"
            :value="showNames"  // здесь  делаю bind  имен  для метриков
        >
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
return this.singleMetricNamesMap.forEach(el => el[this.value.metricId])

Круто.

Откройте документацию, разберитесь, что такое forEach. И какие ещё бывают методы у массивов.

UPD.

metric() {
    if (this.metric) {
        this.setSingleMetricNamesMap({ [this.metric.id]: this.metric.name })
    }
}

Текущее значение наблюдаемого свойства передаётся в наблюдатель первым параметром, this. не нужен:

metric(val) {
  if (val) {
    this.setSingleMetricNamesMap({ [val.id]: val.name });
  }
},
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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