elementui,setCurrentRow()取消高亮行失效,原因是?

elementui,setCurrentRow()取消高亮行失效,原因是?
问题描述:
同时设置了父行的固定列和展开行,

预期效果:
点击父行(看着像父行),父行高亮,取消子行高亮;
点击子行,子行高亮,取消父行高亮;

实际效果:
如果只设置展开行,不设置固定列,可以实现预期效果;
如果同时再设置固定列,点击父行,父行高亮,setCurrentRow()失效,不能取消子行高亮;

img

补充,
设置固定列后,elementui复制了一份table,其中ref也重名了,

img

结论
elementui设置固定列后,
1.不适合展开行的高亮操作,
2.不适合拖拽插件sortablejs的使用,

老弟,这是Element UI Table组件的一个已知问题。当同时使用了固定列和展开行时,setCurrentRow()方法会失效。
这是因为:

  1. 点击父行时,实际上点击的是展开行。由于展开行使用了복制元素,所以导致父行也被高亮。
  2. setCurrentRow()方法在内部使用了rowKey来定位行,而展开行的rowKey与父行相同。所以无法准确定位到展开行来取消高亮。解决方法有两种:
  3. 不使用固定列,只使用展开行。这可以避免上述问题,setCurrentRow()方法正常工作。
  4. 自定义rowKey,为展开行生成独立的rowKey,例如:
rowKey(row) {
  return row.id + (row.expand ? '-expand' : '')
}

这会为展开行生成rowKey如"12-expand",而父行rowKey为"12"。那么setCurrentRow()就可以准确定位到展开行实现取消高亮。
望采纳!