Как получить идентификатор метрики в vuex getter и вернуть имя метрики? - PullRequest
0 голосов
/ 03 октября 2019

В 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"
    >
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...