В vuex важно избегать получателей vuex, которые возвращают объекты. Лучше иметь метод получения vuex, который возвращает имя метрики для идентификатора, чем иметь метод получения vuex, который возвращает объект, содержащий имена и идентификаторы метрики.
Кроме того, при использовании vuex примитивные типы являются предпочтительными объектами. В идеале получатель получает идентификатор метрики и возвращает имя метрики.
Но я передаю ссылку на объект vuex, и это не здорово, поскольку другие могут его мутировать. безопаснее использовать интерфейс, чем передавать сложный тип.
Пожалуйста, помогите мне, как реализовать идею, которую я описал выше?
Здесь я наблюдаю за изменяющимися метриками, и если условие работает, я передаю объекты метрики сключ - это идентификатор метрики и значение - имя метрики для хранения мутаций
watch: {
metric() {
if (this.metric) {
this.setSingleMetricNamesMap({ [this.metric.id]: this.metric.name })
}
}
},
состояние:
singleMetricNamesMap: []
состояние мутаций, когда я нажимаю объект с ключом: идентификатор и значение метрики:mantric name to state
setSingleMetricNamesMap: (state, val) => {
state.singleMetricNamesMap.push(val)
},
получатели состояния возвращают массив с метриками
singleMetricNamesMap: state => state.singleMetricNamesMap
Компонент, где я вызываю getter состояния, затем извлекаю имена метрик по идентификатору метрики и связываю их в html
showMetricName() {
let names = []
if (this.singleMetricNamesMap.length > 0) {
const findNames = this.singleMetricNamesMap.find(el => el[this.value.metricId])
if (findNames) {
names = findNames[this.value.metricId]
}
}
return names
}
<z-dash-tile-config-option
label="Metric"
:value="showMetricName"
>