Appearance
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️⃣ 最终导致显示不出来,或者显示成父节点。