Мутация состояния Vuex обнаружена Vue Dev Tools - компонент не может обнаружить изменение - PullRequest
0 голосов
/ 28 апреля 2020
mutations: {
    //turns sets values to false/off based on area
    updateGroup(state, { newCodes, areaId}) {
        //area is the codes to change only 
       let area = state.details.find(el => el.id === areaId).markers
       let turnOn = {}
       let turnOff = {}
       for(let i = 0; i < area.length; i++) {
           if(newCodes.hasOwnProperty(area[i])) {
               turnOn[area[i]] = area[i]
           } else {
               turnOff[area[i]] = area[i]
           }
       }

       for(let i = 0; i < state.semaforos.length; i++) {
           if(state.semaforos[i].id == turnOn[state.semaforos[i].id]) {
            Vue.set(state.semaforos[i], 'kode', newCodes[state.semaforos[i].id])
           }
           if(state.semaforos[i].id == turnOff[state.semaforos[i].id])
           Vue.set(state.semaforos[i], 'kode', 'off')
       }







    }
}


methods: {
          update(payload) {
          this.$store.commit('updateGroup', payload)
      },
        },

И в компоненте, где я вызываю коммит, я помещаю его в состояние

computed : {
      ...mapState({
        mapArea(state){
          return state.semaforos
        }
      })
    },

Теперь мне удается получить реактивное значение из mapState. в других компонентах этого не происходит

Заранее благодарим за любую помощь, которую вы предоставляете. Хорошего дня!. Изменить: Вот геттеры в соответствии с запросом

getters: {
    getChange: state => {
        return state.semaforos
    }
},

и определение состояния Примечание: я заменил фактические координаты на ?? для конфиденциальности =)

state: {
    semaforos: [
         { id : 'V2',   location: [??], kode : 'off'}, 
         { id : 'P2',   location: [??], kode : 'off'},
         { id : 'V3',   location: [??], kode : 'off'},                 
         { id : 'P3',   location: [??], kode : 'off'},
         { id : 'V4',   location: [??], kode : 'off'}, 
         { id : 'P4',   location: [??], kode : 'off'},
         { id : 'V5',   location: [??], kode : 'off'},        
         { id : 'P5',   location: [??], kode : 'off'},
         { id : 'V6',   location: [??], kode : 'off'}, 
         { id : 'P6',  location: [??], kode : 'off'},
         { id : 'V7',   location: [??], kode : 'off'}, 
         { id : 'P7',   location: [??], kode : 'off'},
         { id : 'V8',   location: [??], kode : 'off'}, 
         { id : 'P8',   location: [??], kode : 'off'},
         { id : 'V9',   location: [??], kode : 'off'}, 
         { id : 'P9',   location: [??], kode : 'off'},
         { id : 'V10',   location: [??], kode : 'off'}, 
         { id : 'P10',   location: [??], kode : 'off'},
         { id : 'V11',  location: [??], kode : 'off'}, 
         { id : 'P11',  location: [??], kode : 'off'},
         { id : 'V12',  location: [??], kode : 'off'}, 
         { id : 'P12',  location: [??], kode : 'off'},
         { id : 'V13',  location: [??], kode : 'off'}, 
         { id : 'P13',  location: [??], kode : 'off'},
         { id : 'V14',  location: [??], kode : 'off'}, 
         { id : 'P14',  location: [??], kode : 'off'},
         { id : 'V1',  location: [??], kode : 'off'}, 
         { id : 'P1',  location: [??], kode : 'off'},
    ]
},

1 Ответ

0 голосов
/ 01 мая 2020

Проблема вообще не была связана с mapState или vuex. Поскольку я использую laravel -echo-сервер, проблема в том, что я посылаю коды из командной строки linux и имею доступ к этим данным только при прослушивании на конкретном канале c (я только слушал это канал на одном компоненте mapState фактически работал над ...). Именно по этой причине у моего другого компонента не было доступа к этим данным на указанном канале c, поэтому он не мог получать обновления (или фиксировать изменения с новыми данными, отражая изменения в хранилище). Спасибо за указатель, хотя, ребята, добрый день!

...