我有一个Vuex状态,其中存储着{LevelId, ElemId}
个记录的数组。我有一个正确匹配LevelId的吸气剂,但是它返回的ElemId
值始终是0
,而不是ElemId
的值。
我最初使用的是find
,但后来将其更改为for
循环以尝试查看为什么这样做。我有一个console.log在此之前立即输出状态,并且它显示ElemId
的正确值,但返回的不是此值。直到最近一直在工作。我不确定最近的npm install
或npm audit fix
是否让某些事情感到沮丧。
const state = {
LastElemSelIdByLevel: [{
LevelId: 0 ,
ElemId: 0 ,
}],
};
const getters = {
GetLastElemSelIdByLevel: state => LevelId => {
// let obj = state.LastElemSelIdByLevel.find(item => item.LevelI == LevelId);
let obj = 0;
console.log('Getter for Elem level obj', LevelId, state.LastElemSelIdByLevel);
for (let i = 0; i < state.LastElemSelIdByLevel.length; i++) {
if (state.LastElemSelIdByLevel[i].LevelId == LevelId) {
console.log(
'Loop found it ',
i,
LevelId,
state.LastElemSelIdByLevel[i].LevelId,
state.LastElemSelIdByLevel[i].ElemId
);
obj = state.LastElemSelIdByLevel[i];
break;
}
}
if (obj && obj.ElemId > 0 && obj.ElemId) {
return obj.ElemId;
} else {
return -1;
}
}
}
从console.log中获取Getter for Elem level obj
我看到例如LevelId为11和state.LastElemSelIdByLevel
,其中数组索引3具有ElemId: 3358
和LevelId: 11
(在Chrome控制台中)。
但是,显示Loop found it
的第二个console.log
3 11 11 0
因此,它可以正确地在索引{{1}处找到LevelId
,并与3
的{{1}}相匹配,但是它返回的是{{ 1}},而不是LevelId
。
有人知道为什么会这样吗?
11
答案 0 :(得分:0)
您好,感谢Linus Borg在Vue论坛上的提示,我找到了解决该问题的方法。组件中有一块手表,由于组件之间的某些复杂交互作用而被触发,这某种程度上使吸气剂中途将ElemId设置为0。我在手表中放置了一个“ if”,以便它仅在ElemId有效且似乎已经治愈的情况下,才调度操作来更新状态。
致谢
Paul Simon