Skip to content

el-cascader层级数据重复导致回显失败

层级值是[1,1,"1"]

  • el-cascader首先根据value: 1匹配顶层。
  • 然后又用value: 1匹配二层,找到第一个匹配到的series_id: 1
  • 最后再用value: "1"匹配三层。

看似没问题,但在lazyLoad动态加载时,组件内部会把每一层的**value**都当成在同一个Map中查找(尤其在懒加载模式下,它内部会缓存加载过的节点)。 所以如果:

  • 在父层节点里有value: 1,并且子层节点里也有value: 1
  • lazyLoad只知道“value=1”而不知道“这是第几层的1”,
  • 那么在回显时就会混淆到底是哪一层的“1”。

📝 造成的后果

1️⃣ 在“动态加载”模式下,el-cascader会调用lazyLoad查找路径,但此时只知道value=1,并不知道这是品牌id还是系列id。 2️⃣ 如果Map里缓存了别的层级的“1”,组件就可能直接找到错误的节点,不再触发lazyLoad,从而无法正确展开层级。 3️⃣ 最终导致显示不出来,或者显示成父节点。

基于 Obsidian + VitePress 构建