Как вернуть копию значения из объекта в магазине Vuex? - PullRequest
2 голосов
/ 06 октября 2019

Важно отметить, что не передается целый объект обратно в геттер. Нужно передать копию объекта "singleMetricNamesMap" значение это имя для метрики, где id является свойством. Это очень важно, потому что если вы возвращаете объект из хранилища, то любой может изменить хранилище напрямую, изменив объект. Этого целого класса ошибок можно избежать, предпочитая геттеры, которые возвращают примитивные типы

Здесь я наблюдаю за изменяющимися метриками, и если условие работает, я передаю объекты метрики для хранения мутаций

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

состояние:

singleMetricNamesMap: {}

получатель состояния, в котором я пытаюсь вернуть имя метрики по идентификатору, который я передаю из компонента

singleMetricNamesMap: state => id => state.singleMetricNamesMap[id]

мутации состояния, когда я записывал метрические объекты в состояние

setSingleMetricNamesMap: (state, val) => {
            state.singleMetricNamesMap[val.id] = val.name
        },

Компонент, в котором я передаю идентификатор метрики в состояние getter и пытаюсь вернуть копию значения объекта (store.singleMetricNamesMap) по id. Но после перезагрузки страницы я получаю неопределенное значение для свойства объекта, то есть для идентификатора, и имена для метрик появляются только после изменения компонента метрики (например, редактирования). Скажите, пожалуйста, правильно ли я возвращаю копию значения из объекта store.singleMetricNamesMap и как отображать имена метрик сразу после загрузки компонента

<z-dash-tile-config-option
            label="Metric"
            :value="singleMetricNamesMap(value.metricId)"
        >
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...