Vuex:getter在通过状态后不工作



我正在开发这个VueVuex网站,我进行了更新,但这破坏了依赖于";选择";状态我把范围缩小到SensorService.toggleSensor的呼叫,但我不知道可能是什么问题。

我有这样一个动作:

async toggleSensor({ state, commit }, sensor) {
let selected = await SensorService.toggleSensor(state.selected, sensor);
console.log(selected);
await commit('updateSelected', selected);
},

这是SensorService.toggleSensor:

async toggleSensor(selected, sensor) {
let deviceId = await store.dispatch('chart/getDeviceIdBySensorId', sensor.id);
let deviceAlreadySelected = false;
let sensorAlreadySelected = false;
for (let devId in selected) {
if (devId === deviceId) {
deviceAlreadySelected = true;
for (let i = 0; i < selected[deviceId].length; i++) {
if (selected[deviceId][i].id === sensor.id) {
sensorAlreadySelected;
// unselect sensor in case of it already being selected
Vue.delete(selected[deviceId], i); 
}
}
}
}
if (! deviceAlreadySelected) {
selected[deviceId] = [sensor];
}
if (! sensorAlreadySelected && deviceAlreadySelected) {
selected[deviceId].push(sensor);
}
return selected;
},

所以当我替换await commit('updateSelected', selected);并像await commit('updateSelected', {"deviceid": [{id: 1522, type: "temp"}]});中那样对数据进行硬编码时,一切都正常,所以很明显,问题是对SensorService.toggleSensor的调用,我只是不知道它可能是什么?有什么想法吗?

在将其传递给SensorService之前,通过简化的深度克隆state.selected解决了此问题。

虽然为什么这是必要的,但我不知道!任何人

最新更新