
由浅拷贝引发的莫名bug
1 2 3 4 5 6 7
| let members = store.getters.members; members = members.filter(item => item.backupType !== 2); members = members.filter(member => { member.name = member.nickname || member.name || member.nid; return member.role !== 'visitor'; });
|
因为members的数据结构为数组,其中保存多个对象member,浅拷贝后,对member.name赋值会影响到store.getters.members 中的member,从而影响到全局数据,界面显示异常;
排查方法:对异常触发组件依次排查
修改:
1 2 3 4 5 6 7 8 9 10 11 12 13
| let members = store.getters.members; members = members.filter(item => item.backupType !== 2); let membersRes = []; members.forEach(member => { if (member.role === 'visitor') { return; } const name = member.nickname || member.name || member.nid; membersRes.push({ ...member, name }); });
|