我正在开发这个Vue
和Vuex
网站,我进行了更新,但这破坏了依赖于";选择";状态我把范围缩小到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
解决了此问题。
虽然为什么这是必要的,但我不知道!任何人